微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除 UITableView 中单元格前的空白

如何解决删除 UITableView 中单元格前的空白

UITableView向下滚动时是否会在空白处显示单元格?

如果是这样,那么问题可能是UITableView由于您在视图中拥有的导航控制器而添加到的插图。插图被添加到表格视图中,以便在未发生滚动时将内容放置在导航栏下方。滚动表格时,内容会滚动并显示在透明导航栏下。当然,只有当表格视图直接在导航栏下方开始时才需要这种行为,这里不是这种情况。

另一件需要注意的事情是,iOS 只为视图层次结构中的第一个视图调整内容插入,如果它是UIScrollView或者它的后代(例如UITableViewUICollectionView)。如果您的视图层次结构包含多个滚动视图,automaticallyAdjustsScrollViewInsets则只会对第一个进行调整。

以下是更改此行为的方法

  • 选择视图控制器
  • 打开属性检查器
  • 在 IB 的属性检查器(选择视图控制器时)中有一个名为“调整滚动视图插图”的属性认情况下是打开的。取消选中此选项:

我不确定哪个 Xcode 版本引入了这个选项(在发行说明中没有发现它),但它至少在 5.1.1 版本中可用。

编辑:为避免混淆,这是评论中提到的第三个选项

将此添加到 ie viewDidLoad(归功于 的回答和 的评论

// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;

// Swift
self.automaticallyAdjustsScrollViewInsets = false

您可以通过添加解决此问题

tableView.contentInset = UIEdgeInsetsZero

//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero

或者,如果您使用的是 IB,并且导航栏不透明(从屏幕截图中看不出来)

  • 选择视图控制器
  • 打开属性检查器
  • 在 View Controller options Extend Edges 部分取消选择“Under Top Bars”

解决方法

我目前正在尝试将
aUITableView放在不同的位置,而不是放在我的视图控制器的顶部。话虽如此,它试图在顶部添加标题以说明导航栏,但这不是必需的,因为我的控制器顶部没有。

如果我将单元格放在我想要的位置的左上角UITableView,它不会将单元格放在那里:

现在,如果我只是向上移动表格视图以便单元格位于正确的位置,我会遇到一个不同的问题 - 滚动时单元格可以向上移动到那里(这是用我的手指在导航控制器上方):

当我放手时,是的 - 单元格将位于搜索栏的正下方,但这显然是一个问题,您如何将它们带到它上方。

我该怎么做呢? 有没有更简单的方法?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。