Swift-将子视图从xib加载到UIScrollView之后,滚动不起作用,并且子视图超出范围

时间:2018-08-07 19:23:26

标签: ios swift uiview uiscrollview

我有以下情况:

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

View1.xib UIView

  1. Im具有UIView类型的可可触摸类,用于加载名为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. 我还为视图定义了适当的约束,以使其高度和宽度与父级ScrollView相等。

Scrollview constraints

  1. 还可以找到如下定义的scrollview属性:

ScrollView Properties

  1. 这是模拟器上的屏幕外观:

Emulator

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

注意-我是新手,请迅速提供帮助。预先感谢。

2 个答案:

答案 0 :(得分:0)

  1. 对于子视图添加  yourView.translatesAutoresizingMaskIntoConstraints = false,然后以编程方式向左,向右,顶部,底部约束,然后添加子视图。
  2. 对于滚动视图,请使用滚动视图设置内部视图的高度限制。设置该约束的出口,然后设置滚动视图出口的动态高度。

答案 1 :(得分:0)

您的newView不能超出scrollView的界限,因为它的高度与您的scrollView相同。但是您的newView的内容超出了newView的范围。(您可以查看是否将newView移出具有相同高度的scrollView并将其设置为backgroundColor或设置clipToBounds属性true),这就是为什么您无法滚动的原因。

要解决这个问题,您应该为newView的{​​{1}}找到另一个来源(也许是一个常量值或其子视图的heihgt或height。这是您的选择)