Swift-UITableView頭部下拉放大

UITableView頭部下拉放大網(wǎng)上很多實(shí)現(xiàn)方式问芬,使用過(guò)程會(huì)感覺(jué)很炫酷册倒,實(shí)際實(shí)現(xiàn)起來(lái)成本確很低蔫耽,兩種實(shí)現(xiàn)方式供參考.

ContentInset實(shí)現(xiàn)

自定義UITableView见秤,數(shù)據(jù)初始化:
<pre><code>` tableView = UITableView(frame: CGRect.init(x: 0, y: 64, width:self.view.bounds.width, height: self.view.bounds.height - 64), style: .plain)
tableView?.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "UITableViewCell")
tableView?.delegate = self
tableView?.dataSource = self

    setUpTableHeader1()
    
    self.view.addSubview(tableView!)
    
    sections = [
        ExpandSection(title: "簡(jiǎn)書(shū)", items: ["FlyElephant", "keso"]),
        ExpandSection(title: "編程語(yǔ)言", items: ["Swift", "Objective-C", "JavaScript", "Python"]),
        ExpandSection(title: "地區(qū)", items: ["北京", "河南", "江西"]),
    ]`</code></pre>

頂部頭部設(shè)置:
<pre><code>let frame:CGRect = CGRect(x: 0, y: -200, width: self.view.bounds.width, height: 200) headerImgView = UIImageView.init(image: UIImage.init(named: "Header.jpeg")) headerImgView.frame = frame headerImgView.contentMode = .scaleAspectFill tableView?.contentInset = UIEdgeInsetsMake(200, 0, 0, 0) tableView?.addSubview(headerImgView)</code></pre>

實(shí)現(xiàn)UIScrollViewDelegate:
<pre><code>` func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offsetY:CGFloat = scrollView.contentOffset.y

    if offsetY < 0 {
        headerImgView.y = offsetY
        headerImgView.height = -offsetY
    }
}`</code></pre>

實(shí)現(xiàn)效果下拉放大效果能實(shí)現(xiàn)控乾,UITableView向上互動(dòng)會(huì)有瑕疵幔欧,效果如下:


FlyElephant-ContentInset.gif

自定義UITableHeaderView

初始化數(shù)據(jù)不變,自定UITableHeaderView丽声,添加子視圖UIImageView
<pre><code>` func setUpTableHeader() {
let frame:CGRect = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 200)

    tableHeaderView = UIView.init(frame: frame)
    headerImgView = UIImageView.init(image: UIImage.init(named: "Header.jpeg"))
    headerImgView.frame = frame
    headerImgView.contentMode = .scaleAspectFill
    
    tableHeaderView.addSubview(headerImgView)
    tableView?.tableHeaderView = tableHeaderView
}`</code></pre>

UIScrollViewDelegate中下拉過(guò)程需要對(duì)視圖進(jìn)行等比例放大及平移礁蔗,停止下來(lái)的時(shí)候置為初始狀態(tài):
<pre><code>` func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offsetY:CGFloat = scrollView.contentOffset.y

    if offsetY < 0 {
        let originalHeight:CGFloat = tableHeaderView.height
        
        let scale:CGFloat = (originalHeight - offsetY) / originalHeight
        let transformScale3D:CATransform3D = CATransform3DMakeScale(scale, scale, 1.0)
        let translation3D:CATransform3D = CATransform3DMakeTranslation(0, offsetY/2, 0)
        headerImgView.layer.transform = CATransform3DConcat(transformScale3D, translation3D)

    } else {
        headerImgView.layer.transform = CATransform3DIdentity
    }
}

`</code></pre>

效果圖如下:


scroll2.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雁社,隨后出現(xiàn)的幾起案子浴井,更是在濱河造成了極大的恐慌,老刑警劉巖霉撵,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磺浙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡徒坡,警方通過(guò)查閱死者的電腦和手機(jī)撕氧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喇完,“玉大人伦泥,你說(shuō)我怎么就攤上這事。” “怎么了不脯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵府怯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我防楷,道長(zhǎng)牺丙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任复局,我火速辦了婚禮冲簿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肖揣。我一直安慰自己民假,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布龙优。 她就那樣靜靜地躺著羊异,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彤断。 梳的紋絲不亂的頭發(fā)上野舶,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音宰衙,去河邊找鬼平道。 笑死,一個(gè)胖子當(dāng)著我的面吹牛供炼,可吹牛的內(nèi)容都是我干的一屋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼袋哼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冀墨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涛贯,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诽嘉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后弟翘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體虫腋,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年稀余,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悦冀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡滚躯,死狀恐怖雏门,靈堂內(nèi)的尸體忽然破棺而出嘿歌,到底是詐尸還是另有隱情,我是刑警寧澤茁影,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布宙帝,位于F島的核電站,受9級(jí)特大地震影響募闲,放射性物質(zhì)發(fā)生泄漏步脓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一浩螺、第九天 我趴在偏房一處隱蔽的房頂上張望靴患。 院中可真熱鬧,春花似錦要出、人聲如沸鸳君。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)或颊。三九已至,卻和暖如春传于,著一層夾襖步出監(jiān)牢的瞬間囱挑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工沼溜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留平挑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓系草,卻偏偏與公主長(zhǎng)得像通熄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子找都,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)棠隐、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評(píng)論 4 62
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,789評(píng)論 25 707
  • 新虎日精進(jìn)411(4.11): 1.思考檐嚣,寫(xiě)觀后感1.5小時(shí) 2.練習(xí)吉他2.5小時(shí) 3.《王牌對(duì)王牌》1小時(shí) ...
    新虎NewTiger閱讀 116評(píng)論 0 0
  • 申辰林/文 01 天下的熱戀都是一個(gè)模樣,花前月下你儂我儂甜甜蜜蜜啰扛,被愛(ài)情蒙蔽了...
    申辰林閱讀 2,914評(píng)論 7 24
  • 2017.06.07 姓名:代利云 公司:寧波慈星股份有限公司 寧波盛和塾《六項(xiàng)精進(jìn)》235期學(xué)員嚎京。 【日精進(jìn)打卡...
    代利云閱讀 122評(píng)論 0 0