UITableView 實(shí)現(xiàn)無(wú)限下拉(背景跟隨放大)

現(xiàn)在大多數(shù)App都有這種效果,實(shí)現(xiàn)原理大同小異查邢。都是監(jiān)聽(tīng)UITableView scrollViewDidScroll 方法去動(dòng)態(tài)改變header frame。

QQ20180505-212023-HD.gif

1.懶加載定義UITableView

    lazy var tableview:UITableView = {
       var mytable = UITableView.init(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height), style: .grouped)
        mytable.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
        mytable.delegate = self
        mytable.dataSource = self
        return mytable
    }()

2.定義Header 背景圖片

    lazy var headerView:UIImageView = {
        var header:UIImageView = UIImageView.init(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 300))
        header.image = UIImage.init(named: "headbg")
        header.contentMode = .scaleAspectFill
        header.backgroundColor = UIColor.red
        return header
    }()

3. 給 tableHeaderView創(chuàng)建view視圖

    override func viewDidLoad() {
        super.viewDidLoad()
        //自定義view 頭像/登錄/注冊(cè) 按鈕都可以放在上面
        let back:UIView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 300))
        back.backgroundColor = UIColor.green
        back.addSubview(headerView)
        self.tableview.tableHeaderView = back
        self.view.addSubview(self.tableview)
        // Do any additional setup after loading the view.
    }

4.創(chuàng)建監(jiān)聽(tīng)scrollViewDidScroll

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        //照片寬度
        let width = self.view.frame.size.width
        //偏移量y
        let yoffset = scrollView.contentOffset.y
        if yoffset<0 {
            let totalOffset = 300 + abs(yoffset)
            let f = totalOffset/300 //計(jì)算縮放比例
            self.headerView.frame = CGRect.init(x: -(width*f-width), y: yoffset, width: width*f, height: totalOffset)
        }
    }

上例是UIViewController 沒(méi)有 UINavigationBar 的情況。如果有UINavigationBar 可將navigationbar 設(shè)置成透明 然后 適當(dāng)設(shè)置 uitableview contentOffset,讓uitableview 在 navigationbar下面众旗。

override func viewWillAppear(_ animated: Bool) {
        //1.判斷登錄狀態(tài)踱侣,load data
        //2.設(shè)置透明
        self.navigationController?.navigationBar.isTranslucent = true
  self.navigationController?.navigationBar.setBackgroundImage(UIImage.init(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage.init()
        self.navigationController?.navigationBar.barStyle = .blackTranslucent
    }

取消透明

    override func viewWillDisappear(_ animated: Bool) {
        self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
        self.navigationController?.navigationBar.shadowImage = nil
        self.navigationController?.navigationBar.barStyle = .default
        self.navigationController?.navigationBar.isTranslucent = false
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锌杀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子泻仙,更是在濱河造成了極大的恐慌糕再,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玉转,死亡現(xiàn)場(chǎng)離奇詭異突想,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)猾担,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)袭灯,“玉大人,你說(shuō)我怎么就攤上這事绑嘹』” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵工腋,是天一觀的道長(zhǎng)姨丈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)擅腰,這世上最難降的妖魔是什么蟋恬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮趁冈,結(jié)果婚禮上歼争,老公的妹妹穿的比我還像新娘。我一直安慰自己渗勘,他們只是感情好沐绒,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著旺坠,像睡著了一般洒沦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上价淌,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天申眼,我揣著相機(jī)與錄音,去河邊找鬼蝉衣。 笑死括尸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的病毡。 我是一名探鬼主播濒翻,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼啦膜!你這毒婦竟也來(lái)了有送?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤僧家,失蹤者是張志新(化名)和其女友劉穎雀摘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體八拱,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阵赠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年涯塔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片清蚀。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匕荸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枷邪,到底是詐尸還是另有隱情榛搔,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布东揣,位于F島的核電站践惑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏救斑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一真屯、第九天 我趴在偏房一處隱蔽的房頂上張望脸候。 院中可真熱鬧,春花似錦绑蔫、人聲如沸运沦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)携添。三九已至,卻和暖如春篓叶,著一層夾襖步出監(jiān)牢的瞬間烈掠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工缸托, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留左敌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓俐镐,卻偏偏與公主長(zhǎng)得像矫限,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子佩抹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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