出现警报控制器时Scrollview的高度变化

时间:2019-05-22 16:05:45

标签: ios swift uiscrollview autolayout

我有一个带有图像和文字的滚动视图。滚动视图正确显示其高度,该高度封装了图像和文本。当警报控制器显示在屏幕上并关闭时,滚动视图的高度会改变。关于这种情况为什么发生以及如何解决的任何想法?

enter image description here

在发出警报之前查看层次结构:

enter image description here

出现警报后:

enter image description here

该视图是在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约束:

enter image description here

2 个答案:

答案 0 :(得分:0)

我在滚动视图约束中的标签是“中心X轴”和“静​​态宽度”。

当我将标签约束更改为导致superview = 45,而后移到superview> = 45时,错误不再存在。

我不知道为什么/如何发生,但是它解决了我的问题。如果有人能解释这种现象。

答案 1 :(得分:0)

这种行为似乎很奇怪。但是您可以尝试以下解决方案:

您直接将UIScrollView添加到主视图。相反,您应该在主视图上使用一个容器视图,然后将scrollView添加到该视图并将约束附加到该容器视图。并且该容器视图应具有主视图的约束。这样可以解决您的问题。