所以我使用UITableView
来显示有关不同电影的信息。
在VC的顶部,我有UIImage
位于UIView
内。然后我的桌子就在下面。该表目前正好位于图像的底部(这就是我想要的),见下文:
问题
我按照教程添加了一个简单的效果,因此当用户拉下tableView时,图像会放大。您可以在此处查看教程,了解我的意思:See here
这一切都很精彩并且给了我想要的效果,然而,它现在在图像下方添加了一个空白区域,请参见下图:
一切仍然正常,效果按预期工作,但现在这个空间 - 我真的不想要。
此VC的故事板中的设置设置如下:
我为实现效果而添加的代码如下:
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布局属性:
答案 0 :(得分:0)
您的问题很可能是private let KTableHeaderHeight: CGFloat = 160.0
行,它不等于标题中imageView
的高度。
您需要在缩放后找出imageView
的固定高度,您可以通过将原始图像高度乘以视图宽度/原始图像宽度来获得,并设置imageView
高度和{ {1}}到那个值。
答案 1 :(得分:0)
如果您使用分组的UITableView,那么它会为该组创建一个空间,而不确定如何摆脱它。您可能需要考虑将其作为UITableView计划,然后通过委托创建所需的部分标题
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
// create UIView here
}
但是,在使用示例项目后,您似乎可以调整顶部的kTableHeightHeader变量进行调整以隐藏顶部标题。
我修改了示例项目,因此您可以看到它here
答案 2 :(得分:0)
Swift 代码:
tableView.tableFooterView = UIView()
目标C 代码:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];