ios - 如何删除 UITableView 上方的空白区域?

标签 ios swift uitableview uiview uiimageview

所以我使用 UITableView 来显示有关不同电影的信息。

在 VC 的顶部,我有一个 UIImage,它位于 UIView 内部。然后我的 table 就坐在下面。该表格当前位于图像底部的正上方(这就是我想要的),如下所示:

enter image description here

问题

我按照教程添加了一个简单的效果,因此当用户在 tableView 上下拉时,图像会放大。您可以通过查看此处的教程来了解我的意思:See here

这一切都非常有效,给了我想要的效果,但是,它现在在图像下方添加了一个空白区域,请参见下图:

enter image description here

一切仍然工作正常,并且效果按预期工作,但是现在这个空间就在那里 - 我真的不想要。

该 VC 的 Storyboard 中的设置如下:

enter image description here

我添加的实现效果的代码如下:

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 布局属性:

enter image description here

最佳答案

您的问题可能是 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/

相关文章:

ios - UITableView.automaticDimension 高度即将到来 -1

ios - MapKit 异常 : Cannot remove an observer for the key path "title"

ios - 从 Xamarin.iOS 绑定(bind)库引用 Storyboard

ios - 带有 Swift 的 iOS 中的持久对象

ios - 从 UIViewController 访问 UITableViewCell 的属性

ios - 以编程方式将 UITextView 添加为 UITableView header

objective-c - iOS 似乎绕过了基本的服务器身份验证

ios - try catch swift 2.0

ios - 如何使用 IBDesignable UIImageView 在 prepareForInterfaceBuilder 中加载图像

swift - 如果我在 Swift 中得到一个 UnsafeMutablePointer,我应该免费打电话吗?