Ios 如何删除UITableView上方的空白?
因此,我使用Ios 如何删除UITableView上方的空白?,ios,swift,uitableview,uiview,uiimageview,Ios,Swift,Uitableview,Uiview,Uiimageview,因此,我使用UITableView来显示关于不同电影的信息 在VC的顶部,我有一个UIImage,它位于UIView的内部。然后我的桌子就在下面。该表当前正好位于图像的底部(这是我想要的),请参见以下内容: 问题 我按照教程添加了一个简单的效果,因此当用户下拉tableView时,图像会放大。您可以通过在此处查看教程了解我的意思: 这一切都很好,给了我想要的效果,然而,现在在图片下方添加了一个空白,请参见下图: 一切都很好,效果也和预期的一样,但是这个空间现在就在那里——我真的不想要 此VC
UITableView
来显示关于不同电影的信息
在VC的顶部,我有一个UIImage
,它位于UIView
的内部。然后我的桌子就在下面。该表当前正好位于图像的底部(这是我想要的),请参见以下内容:
问题
我按照教程添加了一个简单的效果,因此当用户下拉tableView时,图像会放大。您可以通过在此处查看教程了解我的意思:
这一切都很好,给了我想要的效果,然而,现在在图片下方添加了一个空白,请参见下图:
一切都很好,效果也和预期的一样,但是这个空间现在就在那里——我真的不想要
此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()
}
func updateHeaderView(){
var headerRect=CGRect(x:0,y:-KTableHeaderHeight,宽度:tableView.bounds.width,高度:KTableHeaderHeight)
如果tableView.contentOffset.y<-KTableHeaderHeight{
headerRect.origin.y=tableView.contentOffset.y
headerRect.size.height=-tableView.contentOffset.y
}
headerView.frame=headerRect
}
重写函数scrollViewDidScroll(scrollView:UIScrollView){
updateHeaderView()
}
如果我注释掉我添加的所有代码,它看起来又很好了,所以我猜是这段代码造成了空间
我真的很想知道为什么会出现这种差距,以及我如何消除它,仍然使用添加的代码来实现图像放大效果
更新
我的UIImageView布局属性:
您的问题可能是
私有let KTableHeaderHeight:CGFloat=160.0
行,它不等于标题中图像视图的高度
缩放后需要找出imageView
的固定高度,可以通过将原始图像高度乘以视图宽度/原始图像宽度得到,并将imageView
高度和private var KTableHeaderHeight:CGFloat
设置为该值。如果使用分组的UITableView,则会为该组留出空间,但不确定如何消除它。您可能需要考虑将其作为计划UITababVIEW,然后通过委托创建所需的节标头。
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
// create UIView here
}
但是,在使用示例项目之后,似乎可以在顶部调整kTableHeightHeader变量,以隐藏顶部部分标题
我修改了示例项目,以便您可以看到它Swift代码:
tableView.tableFooterView = UIView()
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
目标C代码:
tableView.tableFooterView = UIView()
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
标题中的imageView
有哪些布局属性?啊,好的,阅读代码,我会放弃回答好的,我的图像设置为固定大小375x160-那么你建议我将“KTableHeaderHeight”设置为什么?谢谢,对于屏幕尺寸不是750px宽的设备,这是行不通的。您是否仍然可以显示imageView
的布局属性。我假设您使用的是方面填充
模式,对吗?@Nick89“您还可以显示imageView的布局属性吗?”当然,当我回到笔记本电脑时,我可以用这个更新问题。我唯一修改的是方面填充模式。提前感谢嗨,我已经添加了一个显示所要求的图像属性的图像,谢谢我已经添加了这些约束。为了检查这一点,我刚刚删除了它们并重新添加了它们,确保它们是正确的,它们是正确的,但没有任何区别。@Nick89愚蠢的问题是图像160的高度?还是有点小二奶。是的,我的图像高度是160@Nick89我会尝试调试视图层次结构,看看问题是否在于图像没有恢复到正确的大小,视图是否比开始时大。无论是哪一个,您都可以通过在ScrollViewDiEndDecellerating中添加正确的大小来强制恢复。我仔细查看并逐步修改了它,但我看不到任何问题。我还在ScrollViewDiEndDecelling
函数中添加了您的代码,但没有任何区别:(