ios实现tableView顶部弹簧图片效果
程序员文章站
2023-12-18 20:33:28
大家可能注意到有些tableview的顶部图片,会随着你拉伸而跟着拉伸变大。本文实例为大家分享了ios实现tableview顶部“弹簧”图片,供大家参考,具体内容如下...
大家可能注意到有些tableview的顶部图片,会随着你拉伸而跟着拉伸变大。本文实例为大家分享了ios实现tableview顶部“弹簧”图片,供大家参考,具体内容如下
一种思路是将图片放置tableview的tableheaderview上当tablview下移改变图片的frame达到效果。当然这个效果特别简单,高手可以略过。
代码如下
import uikit class viewcontroller: uiviewcontroller,uitableviewdatasource,uitableviewdelegate { lazy var mytableview : uitableview! = { var tableview = uitableview.init(frame: self.view.frame,style:uitableviewstyle.plain) tableview.delegate = self tableview.datasource = self tableview.register(uitableviewcell.classforcoder(), forcellreuseidentifier: "mycell") return tableview }() var headerimageview:uiimageview? var headerview:uiview? var headerviewheight:cgfloat = 0.0 override func viewdidload() { super.viewdidload() // do any additional setup after loading the view, typically from a nib. setupui() } func setupui(){ headerview = uiview.init(frame: cgrect(x:0,y:0,width:self.view.frame.width,height:300)) headerviewheight = headerview!.frame.height; self.view.addsubview(headerview!) headerimageview = uiimageview.init(frame: headerview!.frame) headerimageview?.image = uiimage.init(named: "bg-mine") headerview?.addsubview(headerimageview!) mytableview.tableheaderview = headerview self.view.addsubview(mytableview) } func tableview(_ tableview: uitableview, numberofrowsinsection section: int) -> int { return 2 } func tableview(_ tableview: uitableview, cellforrowat indexpath: indexpath) -> uitableviewcell { let cell:uitableviewcell = tableview.dequeuereusablecell(withidentifier: "mycell", for: indexpath) cell.textlabel?.text = "测试" return cell } func tableview(_ tableview: uitableview, heightforrowat indexpath: indexpath) -> cgfloat { return 50 } func scrollviewdidscroll(_ scrollview: uiscrollview) { let contentoffsety = scrollview.contentoffset.y if contentoffsety < 0 { var rect = headerview?.frame rect?.size.height = headerviewheight - contentoffsety let headerviewwidth = headerview?.frame.size.width rect?.size.width = headerviewwidth!*(headerviewheight-contentoffsety)/headerviewheight rect?.origin.x = -((rect?.size.width)! - headerviewwidth!)/2 rect?.origin.y = contentoffsety headerview?.frame = rect! headerimageview?.frame = rect! } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。