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
函数中添加了您的代码,但没有任何区别:(