【问题标题】:Swift - After loading subview from xib to UIScrollView, scroll is not working and subview is going out of boundsSwift - 将子视图从 xib 加载到 UIScrollView 后,滚动不起作用并且子视图超出范围
【发布时间】:2019-01-14 23:19:16
【问题描述】:

我有以下场景:

  1. 我有一个名为 View1.xib 的 xib 文件,其中包含一些包含某些按钮集的堆栈视图。

View1.xib UIView

  1. 我有一个 UIView 类型的 coco touch 类,用于加载名为 View1 的 Nib。此外,我已经成为以前 xib 的所有者。下面是我用来加载视图的代码:

    override init(frame: CGRect) {
        super.init(frame: frame)
        commitInit()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commitInit()
    }
    
    private func commitInit() {
        Bundle.main.loadNibNamed("View1", owner: self, options: nil)
    
        containerView.frame = self.bounds
        containerView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        addSubview(containerView)
    }
    
  2. 现在,我在故事板中包含了滚动视图和一个子 UIView。我已将 Subview 类型定义为 View1。

ScrollView in main storyboard

  1. 我还为 View 定义了适当的约束,使其与父 ScrollView 的高度和宽度相等。

Scrollview constraints

  1. 还可以找到如下定义的滚动视图属性:

ScrollView Properties

  1. 这是屏幕在模拟器上的样子:

Emulator

现在,当我运行项目时,我得到了屏幕,但我无法滚动浏览包含的视图。因此,顶部和底部的一些元素被隐藏(超出范围),我也无法滚动。我做错什么了吗?请帮帮我。

注意 - 我对 swift 很陌生,非常感谢任何帮助。提前致谢。

【问题讨论】:

  • 请不要大喊大叫。这对您向其提出问题的人没有影响。它甚至可能让人不敢靠近。

标签: ios swift uiview uiscrollview


【解决方案1】:

您的newView 不能流出scrollView 的边界,因为它与您的scrollView 高度相同。但是您的newView 的内容超出了newView 的范围。(您可以查看是否将newView 放在具有相同高度的scrollView 之外并将其设置为backgroundColor 或设置clipToBounds 属性@987654329 @) 这就是你不能滚动的原因。

要解决这个问题,您应该为您的 newViewheight 找到另一个来源(可能是一个常量值或其子视图的 heihgt 或 safeArea.heihgt 。这是您的选择)

【讨论】:

    【解决方案2】:
    1. 对于子视图添加 yourView.translatesAutoresizingMaskIntoConstraints = false,然后以编程方式进行左、右、上、下约束,然后添加子视图。
    2. 对于滚动视图,使用滚动视图设置内部视图的高度约束。制作该约束的出口,然后设置滚动视图出口的动态高度。

    【讨论】:

    • 我不明白一些点:第1点。所以我应该在UIView类中声明containerView.translatesAutoresizingMaskIntoConstraints = false?第 2 点:对于滚动视图下的 UIView,我已经使其宽度和高度与超级视图(UIScrollView)相等。设置滚动视图插座的动态高度到底是什么意思?请务必让我知道。谢谢
    猜你喜欢
    • 2019-07-04
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多