所以我使用 UITableView
来显示有关不同电影的信息。
在 VC 的顶部,我有一个 UIImage
,它位于 UIView
内部。然后我的 table 就坐在下面。该表格当前位于图像底部的正上方(这就是我想要的),如下所示:
问题
我按照教程添加了一个简单的效果,因此当用户在 tableView 上下拉时,图像会放大。您可以通过查看此处的教程来了解我的意思:See here
这一切都非常有效,给了我想要的效果,但是,它现在在图像下方添加了一个空白区域,请参见下图:
一切仍然工作正常,并且效果按预期工作,但是现在这个空间就在那里 - 我真的不想要。
该 VC 的 Storyboard 中的设置如下:
我添加的实现效果的代码如下:
private let KTableHeaderHeight: CGFloat = 160.0 // which is the height of my UIImage
var headerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
headerView = tableView.tableHeaderView
tableView.tableHeaderView = nil
tableView.addSubview(headerView)
tableView.contentInset = UIEdgeInsets(top: KTableHeaderHeight, left: 0, bottom: 0, right: 0)
tableView.contentOffset = CGPoint(x: 0, y: -KTableHeaderHeight)
updateHeaderView()
}
然后:
func updateHeaderView() {
var headerRect = CGRect(x: 0, y: -KTableHeaderHeight, width: tableView.bounds.width, height: KTableHeaderHeight)
if tableView.contentOffset.y < -KTableHeaderHeight {
headerRect.origin.y = tableView.contentOffset.y
headerRect.size.height = -tableView.contentOffset.y
}
headerView.frame = headerRect
}
override func scrollViewDidScroll(scrollView: UIScrollView) {
updateHeaderView()
}
如果我注释掉我添加的所有代码,它看起来又很好,所以我猜测是这段代码导致了空格。
我真的很想了解为什么会形成这个间隙,以及如何消除它,仍然使用添加的代码来实现图像放大效果。
更新
我的 UIImageView 布局属性:
最佳答案
您的问题可能是 private let KTableHeaderHeight: CGFloat = 160.0
行,它不等于 header 中 imageView
的高度。
需要找出缩放后imageView
的固定高度,可以通过原始图像高度乘以 View 宽度/原始图像宽度得到,并设置imageView
height 和 private var KTableHeaderHeight: CGFloat
为该值。
关于ios - 如何删除 UITableView 上方的空白区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380409/