cell下拉顶部拉伸

本文介绍了一种在Swift中自定义TableView HeaderView的方法,并通过调整Header View中的背景图片位置来实现下拉效果。该方案利用了自定义UIView类并结合UIScrollViewDelegate的方法来实现背景图片随手指滑动而变化的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

针对一般tableView下拉整个tableviewcell一起向下移动进行修改。

效果图:

首先创建一个headerView文件和XIB
headerView.swift

import UIKit
import IBAnimatable
class NoLoginHeaderView: UIView {
//背景图片
@IBOutlet weak var baImageView: UIImageView!
//创建注册View的类方法
class func headerView()->NoLoginHeaderView{
print(self)
return Bundle.main.loadNibNamed("\(self)", owner: nil, options: nil)?.last as! NoLoginHeaderView
}
}

headerView.xib:

要实现背景图占领整个上半部分,所以将图片向上的约束设置为-20
同时在tableViewController的Viewdidload()中添加以下代码

//实例化headerView
fileprivate lazy var headerView:NoLoginHeaderView = {
let headerView = NoLoginHeaderView.headerView()
return headerView
}()
//设置tableView的headerView
tableView.tableHeaderView = headerView
//设置状态栏的颜色
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}

添加以下方法对向下拉进行代理

override func scrollViewDidScroll(_ scrollView: UIScrollView) {
//偏移量
let offsetY = scrollView.contentOffset.y
//判断是否向下划动
if offsetY < 0 {
//headerView高度位260,因为图片向上位-20,所以headerView设置位280
let kMyHeaderViewHeight = 280
let totalOffset = kMyHeaderViewHeight + abs(offsetY)
let f = totalOffset / kMyHeaderViewHeight
headerView.baImageView.frame = CGRect(x:-screenWidth*(f-1)*0.5, y: offsetY, width: screenWidth*f, height: totalOffset)
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值