【发布时间】:2023-03-25 21:48:01
【问题描述】:
我的应用中有一个UINavigationController。 UINavigationBar 设置为不透明,所有滚动视图都不会在栏下方重叠。
在一个视图中,我有一个UITableView。 UITableView 的框架在我的 iPhone 5 上是 (0 0; 320 504)。即高度是 568 - 64(导航栏和状态栏的高度)。
UITableView 的contentInset 是(0, 0, 0, 0)。当表格视图第一次加载时,contentOffset 是(0, 0)。
这很好。效果很好。
我在表格视图中添加了UIRefreshControl。这工作了几次,但在几次拉动刷新之后,顶部的内容就会“卡在”导航栏下。
发生这种情况时,我检查了contentInset,现在它是(-60, 0, 0, 0)。
有什么方法可以阻止 UIRefreshControl 更改 contentInset?
【问题讨论】:
-
删除了我的答案,因为您显然已经排除了它。我猜你是在调用 endRefreshing?
-
不用担心。是的,当我在控件上调用
endRefreshing时,它会消失。这可以正常工作几次,但随后就吓坏了,contentInset更改隐藏导航栏下的前几行。 -
刷新后您可能会重新设置框架,但您不必这样做。
-
我现在已经通过在结束刷新后手动将 contentInset 设置回 0 来解决它。但是现在它没有动画刷新控件的消失。它只是跳回来。如果我尝试对其进行动画处理,它会崩溃。大声笑
-
您可能会尝试的最后一件事是在 IB 中添加 UIRefreshControl。如果您单击 UITableviewController 在 Storyboard 上,然后在 Attributes Inspecter 中,将 Refreshing 设置设置为启用,它会为您添加一个 UIRefresh 控件。然后,您可以将 IBAction 链接到它或在 viewDidLoad 中添加选择器。可能值得一试。
标签: ios objective-c uitableview uirefreshcontrol