欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios实现tableView顶部弹簧图片效果

程序员文章站 2023-12-21 08:05:40
大家可能注意到有些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!
  } 
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: