gpt4 book ai didi

ios - Swift - UIScrollview 中的子 UIView 直到旋转后才显示

转载 作者:行者123 更新时间:2023-11-28 09:02:32 26 4
gpt4 key购买 nike

在使用自动布局构建基本的 UIScrollView 示例时,我遇到了一些奇怪的行为。

在 Storyboard 编辑器中,我添加了一个 UIScrollView 作为默认 UIView 的 subview ,并在其中添加了一个新的 UIView 并将其命名为 contentView:

View

--scrollView

----contentView

我向 contentView 添加了一些标签和文本框,并将它们的约束设置到父容器 (contentView)。

我还将 contentView 的约束设置为 UIScrollView,将 UIScrollView 设置为其父级,最后将 contentView 设置为使用与顶级 UIView 相同的高度和宽度。添加约束后,所有关于缺少约束的错误或警告都消失了,屏幕看起来完全符合我在 Storyboard 编辑器中的要求。

为了便于故障排除,我将主视图着色为蓝色,将 UIScrollView 着色为黄色,将内容 View 着色为绿色。

当我在模拟器或真实手机上运行应用程序时,文本字段缩小而不是 200 宽,标签 3 及其文本框丢失(很可能在屏幕外)并且屏幕为黄色,表明 UIScrollView 是被显示。当我旋转屏幕时,一切看起来都和它应该的一样:

Gifycat image link as I can't post images yet

打印出框架的宽度:

  • View 宽度:320.0
  • ScrollView 宽度:240.0
  • contentView 宽度:240.0

我已经使用 Xcode 6.4 和 7.0 beta 4 在 Swift 1 和 2 中复制了这种行为。

最佳答案

所以我设法通过覆盖 viewController.swift 中的 viewDidLayoutSubviews() 函数来修复子 UIView

    override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()

let widthConstraint = NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: parentView.frame.width)

contentView.addConstraint(widthConstraint)

let heightConstraint = NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: parentView.frame.height)
contentView.addConstraint(heightConstraint)
}

parentView 是顶级 UIView 的导出,而 contentView 是 UIScrollView 中子 UIView 的导出。

关于ios - Swift - UIScrollview 中的子 UIView 直到旋转后才显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com