显示警报控制器时滚动视图高度发生变化
Scrollview Height Changes when Alert Controller is presented
我有一个带有图像和文本的滚动视图。滚动视图正确显示其封装图像和文本的高度。当警报控制器出现在屏幕上并被关闭时,滚动视图的高度会发生变化。关于为什么会发生这种情况以及如何解决这个问题有什么想法吗?
在出现警报之前查看层次结构:
出现警报后:
视图在 viewDidLoad 之后添加并使用约束以编程方式添加:
let offlineView = OfflineView()
view.addSubview(offlineView)
offlineView.translatesAutoresizingMaskIntoConstraints = false
offlineView.topAnchor.constraint(equalTo: navBar.bottomAnchor, constant: 0).isActive = true
offlineView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
offlineView.leftAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leftAnchor, constant: 0).isActive = true
offlineView.rightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.rightAnchor, constant: 0).isActive = true
OfflineView Xib 约束:
我在滚动视图约束中的标签是中心 X 轴和静态宽度。
当我将标签约束更改为 leading to superview = 45, trailing to superview >= 45 时,错误不再存在。
我不知道 why/how 发生过这种情况,但它解决了我的问题。如果有人能解释这种现象。
这种行为似乎很奇怪。但您可以尝试以下解决方案:
您是直接向主视图添加一个 UIScrollView。相反,您应该在主视图上获取一个容器视图,然后将您的 scrollView 添加到该视图并将约束附加到该容器视图。并且该容器视图应该具有主视图的约束。这将解决您的问题。
我有一个带有图像和文本的滚动视图。滚动视图正确显示其封装图像和文本的高度。当警报控制器出现在屏幕上并被关闭时,滚动视图的高度会发生变化。关于为什么会发生这种情况以及如何解决这个问题有什么想法吗?
在出现警报之前查看层次结构:
出现警报后:
视图在 viewDidLoad 之后添加并使用约束以编程方式添加:
let offlineView = OfflineView()
view.addSubview(offlineView)
offlineView.translatesAutoresizingMaskIntoConstraints = false
offlineView.topAnchor.constraint(equalTo: navBar.bottomAnchor, constant: 0).isActive = true
offlineView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
offlineView.leftAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leftAnchor, constant: 0).isActive = true
offlineView.rightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.rightAnchor, constant: 0).isActive = true
OfflineView Xib 约束:
我在滚动视图约束中的标签是中心 X 轴和静态宽度。
当我将标签约束更改为 leading to superview = 45, trailing to superview >= 45 时,错误不再存在。
我不知道 why/how 发生过这种情况,但它解决了我的问题。如果有人能解释这种现象。
这种行为似乎很奇怪。但您可以尝试以下解决方案:
您是直接向主视图添加一个 UIScrollView。相反,您应该在主视图上获取一个容器视图,然后将您的 scrollView 添加到该视图并将约束附加到该容器视图。并且该容器视图应该具有主视图的约束。这将解决您的问题。