我面临着一个问题,当滚动到嵌入在UIView控制器中的UITableView上时,大标题导航栏突然折叠。似乎只有在屏幕上向上滚动时才会出现此问题。当在屏幕上向下滚动时,标题会平稳地过渡到再次变大,但反之亦然。
如果使用UITableView控制器,则不会出现此问题。
以下是在UITableView控制器内滚动时的正常预期行为。
下面是在UIView控制器中使用UITableView时出现的突然转换。
以下是中断实现的代码:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 12
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Basic", for: indexPath)
cell.textLabel?.text = "Title \(indexPath.row)"
return cell
}
}
导航栏选中了首选大标题,并且导航项目的大标题设置为自动。
上面两个示例的代码和配置完全相同,只是UIView控制器中的UITableView控制器与UITableView不同。
我还观察到,如果UITableView的内容不超过视图的高度,则不会发生中断行为。但是,一旦屏幕上的单元格数量超过了可以容纳的数量,它就会破裂。
你知道我是不是做错了什么,或者这是不是iOS 11的错误?
5条答案
按热度按时间sbtkgmzw1#
我遇到了同样的问题-我将
UIViewController
嵌入到UINavigationController
中,UIViewController
具有表视图,表视图具有对安全区域的前导、拖尾、顶部和底部约束。整个桌面呈现出跳跃/急促的样子。诀窍是将Tableview的顶部约束更改为Superview。8qgya5xd2#
将这行代码放在包含UITableView的UIView控制器上,这样对我来说就行了。
斯威夫特
目标-C
将UITableView自动布局顶部空间设置为“Superview”,而不是“Safe Area”
pepwfjgg3#
我有一个类似的外观问题,并通过从我的AppDelegate中删除
UINavigationBar.appearance().isTranslucent = false
来解决它。更新:如果你不想要半透明效果,你应该启用
extendedLayoutIncludesOpaqueBars
。这样一来,所有的故障都被修复了。dxpyg8gm4#
在界面生成器中:
1.选择您的“viewController”。
1.属性检查器勾选“在不透明条下”和“在顶条下”。
1.将ScrollView第二项的最高限制设置为“SuperView”,而不是“SafeArea”。
这对我很管用。
Reference
ws51t4hk5#
苏奥勒的回答是正确的,但我不知道如何在故事板上修正它。最后,我在另一个问题中用罗曼的解决方案解决了问题,添加了以下内容:
在
viewDidLoad
中。原始答案:https://stackoverflow.com/a/48321447/1386369