仿支付寶首頁(yè)效果實(shí)現(xiàn)

參考資料: iOS 高仿支付寶 9.x 版本首頁(yè)

但是我跟參考資料中作者關(guān)于整個(gè)頁(yè)面的設(shè)計(jì)邏輯不一致, 但是實(shí)現(xiàn)的效果一樣, 也算是多一種實(shí)現(xiàn)方式, 希望跟大家一起共同學(xué)習(xí).

先上效果

效果圖.gif

整個(gè)界面的結(jié)構(gòu)圖

結(jié)構(gòu)圖.png

關(guān)于整個(gè)頁(yè)面布局邏輯, 從上往下說(shuō):

1.頂部: "類(lèi)導(dǎo)航欄", 因?yàn)槠洳⒉皇菍?dǎo)航欄, 只是一個(gè)跟導(dǎo)航欄尺寸一致的View, 所以進(jìn)入這個(gè)頁(yè)面的時(shí)候需要將自帶的導(dǎo)航欄隱藏掉. 此部分共三層, 從底層往上依次是: 底色View(藍(lán)色背景色), 掃一掃View(剛開(kāi)始隱藏, 向上滾動(dòng)后逐漸顯示), 搜索框View.

2. tableView, 緊接著就是一個(gè)帶有tableHeaderView的tableView, 其tableHeaderView高度與添加到tableView上顯示主要功能的view的尺寸一致.

注意細(xì)節(jié): 在整個(gè)向上緩慢滑動(dòng)的過(guò)程中, 會(huì)發(fā)現(xiàn)頂部圖標(biāo)的隱藏/顯示變化過(guò)程分為三個(gè)部分: 1. 搜索框view快速消失, 2.搜索框view后緊接著另一個(gè)"類(lèi)導(dǎo)航"view(掃一掃 + 付錢(qián) + 搜索 + "+")逐漸顯示, 3. 下面的四個(gè)主要功能模塊逐漸消失, 當(dāng)滑動(dòng)到導(dǎo)航欄位置時(shí), 徹底消失. 并且, 當(dāng)四個(gè)主要功能模塊完全消失的時(shí)候, 此時(shí)手離開(kāi)屏幕, 其會(huì)自動(dòng)向上滾動(dòng)到四個(gè)主要功能模塊完全消失的位置.

關(guān)鍵代碼:


func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        let offentY = scrollView.contentOffset.y
        // 此處之所以以24為判斷依據(jù), 主要是因?yàn)橐c下面設(shè)置alpha保持一致, 1 - 24 / 95 約等于 0.75
        if offentY > 0 && offentY < 24 {
            tableView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
        } else if offentY >= 24 && offentY < 95 {
            tableView.setContentOffset(CGPoint(x: 0, y: 95), animated: true)
        }
}
    
func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offsetY = scrollView.contentOffset.y
        if offsetY <= 0 {
            headerView.frame = CGRect(x: 0, y: offsetY, width: SCREEN_WIDTH, height: 305)
            childVC?.changeAlpha(alpha: 1)
            coverNavView.alpha = 0
            mainNavView.alpha = 1
        } else if offsetY > 0 && offsetY < 95 {
            //處理透明度
            let alpha = (1 - offsetY / 95) > 0 ? (1 - offsetY / 95) : 0
            childVC?.changeAlpha(alpha: alpha / 3)
            if alpha > 0.9 { // 為了原顯示內(nèi)容可以快速消失, 增加后面有更長(zhǎng)的顯示時(shí)長(zhǎng)
                coverNavView.alpha = 0
                mainNavView.alpha = alpha / 5
            } else {
                mainNavView.alpha = 0
                coverNavView.alpha = 1 - alpha
                if alpha <= 0.75 {
                    childVC?.changeAlpha(alpha: 0)
                }
            }
       }
}

使用MJRefresh時(shí)注意一個(gè)點(diǎn)

tableView.mj_header = MJRefreshNormalHeader { [weak self] in
      guard let weak = self else {return}
      DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
           // Put your code which should be executed with a delay here
           weak.tableView.mj_header.endRefreshing()
           weak.dataSorceNumber = 10
           weak.tableView.reloadData()
      })
}

//重點(diǎn): 由于頂部有305高度的tableHeaderView, 并且在設(shè)置的時(shí)候, 將tableView的scrollIndicatorInsets的top值設(shè)置為305, 所以需要忽略這部分高度, 才可以正常顯示下拉刷新動(dòng)畫(huà).
tableView.mj_header.ignoredScrollViewContentInsetTop = -305
tableView.mj_footer = MJRefreshAutoNormalFooter { [weak self] in
      guard let weak = self else {return}
      DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2), execute: {
            weak.tableView.mj_footer.endRefreshing()
            weak.dataSorceNumber += 10
            weak.tableView.reloadData()
      })
}

源代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瞳步,更是在濱河造成了極大的恐慌,老刑警劉巖站楚,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搏嗡,居然都是意外死亡窿春,警方通過(guò)查閱死者的電腦和手機(jī)拉一,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)旧乞,“玉大人蔚润,你說(shuō)我怎么就攤上這事〕咂埽” “怎么了嫡纠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)延赌。 經(jīng)常有香客問(wèn)我除盏,道長(zhǎng),這世上最難降的妖魔是什么挫以? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任者蠕,我火速辦了婚禮,結(jié)果婚禮上掐松,老公的妹妹穿的比我還像新娘踱侣。我一直安慰自己,他們只是感情好大磺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布抡句。 她就那樣靜靜地躺著,像睡著了一般量没。 火紅的嫁衣襯著肌膚如雪玉转。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天殴蹄,我揣著相機(jī)與錄音,去河邊找鬼猾担。 笑死袭灯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绑嘹。 我是一名探鬼主播稽荧,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼工腋!你這毒婦竟也來(lái)了姨丈?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤擅腰,失蹤者是張志新(化名)和其女友劉穎蟋恬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體趁冈,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歼争,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年拜马,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沐绒。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俩莽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乔遮,到底是詐尸還是另有隱情扮超,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布蹋肮,位于F島的核電站出刷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏括尸。R本人自食惡果不足惜巷蚪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望濒翻。 院中可真熱鬧屁柏,春花似錦、人聲如沸有送。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雀摘。三九已至裸删,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阵赠,已是汗流浹背涯塔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留清蚀,地道東北人匕荸。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枷邪,于是被迫代替她去往敵國(guó)和親榛搔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)东揣、插件践惑、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,098評(píng)論 4 62
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,099評(píng)論 25 707
  • 我們的童年 沉默 金色六月憶童年, 美好時(shí)光浮眼前嘶卧。 家里有父母的疼愛(ài)尔觉, 校園里有調(diào)皮的玩伴。 你可記得池塘捉魚(yú)...
    沉默劉建平閱讀 189評(píng)論 0 0
  • 代理的ip是自己開(kāi)的wifi的ip绑蔫,
    gogoforit閱讀 906評(píng)論 0 0
  • 聽(tīng)說(shuō) 目送太久 會(huì)忘了前行
    夕美人閱讀 300評(píng)論 0 0