ios - 永久设置 UITableView 内容插入

在我的应用程序中,我有一个 UISearchBarUINavigationBar 下所以它总是对用户可见。在那种情况下,我必须设置 contentInset额外的 44px 所以 UIScrollView将在 UISearchBar 下滚动(就像在 Contacts.app 中一样)。并且静态UITableView不会有问题的,但在我的情况下,我必须重新加载它的内容,切换到 UISearchDisplayController等等所以当我打电话时:

[self.tableView setContentInset:UIEdgeInsetsMake(108, 0, 0, 0)];

一切正常,直到例如我拉刷新...(为此我使用 SSPullToRefresh )。

所以我的问题是:如何设置 contentInset永久保存,因此我不必担心 UITableView 中的数据会发生任何变化?

最佳答案

这可能是我的某种错误,因为我弄乱了自动布局和 Storyboard ,但我找到了答案。

你必须在 View Controller 的 Attribute Inspector 中照顾这个小家伙

必须取消选中,以便在任何更改后不会设置默认的 contentInset。 之后,它只是向 viewDidLoad 添加单行:

[self.tableView setContentInset:UIEdgeInsetsMake(108, 0, 0, 0)]; // 108 is only example

iOS 11、Xcode 9 更新

如果涉及到 iOS 11Xcode 9,之前的解决方案似乎不再正确。 automaticallyAdjustsScrollViewInsets 已被弃用,现在要达到类似的效果,您必须转到 Size Inspector 在那里您可以找到:
此外,您可以在代码中实现相同的效果:

if #available(iOS 11.0, *) {
    scrollView.contentInsetAdjustmentBehavior = .never
} else {
    automaticallyAdjustsScrollViewInsets = false
}

https://stackoverflow.com/questions/22020943/

相关文章:

ios - 禁用 UITextField 的自动更正

ios - 检测 iPhone 应用程序中是否存在摄像头?

objective-c - 请求访问相机胶卷的权限

ios - 为什么 UIViewController 在 UINavigationBar 下扩展,而

ios - 如何使用图像和标签制作自定义 UIBarButtonItem?

ios - 如何检查 NSArray 中的对象是否为 NSNull?

ios - UITableViewCell 选中行的文字颜色变化

iphone - 快速将单个引脚添加到 MKMapView?

ios - 如何在运行时更改约束优先级

iphone - UISegmentedControl 文本以编程方式