将动态视图添加到UIScrollView

时间:2015-06-11 09:14:54

标签: ios swift

所以我正在尝试克隆Apple天气应用程序。我的ViewHierarchy看起来像这样:

ViewControllerA包含一个UIScrollView,其中包含UIView (UIView1),而UIView包含子元素。{{1}下方还有一个按钮1}}在UIScrollView内添加更多UIView。 此UIScrollView是使用UIViewControllerIB中设计的。

当我理想地点击此按钮时,我想克隆AutoLayout并将其添加到UIView1UIScrollViewcurrentView的右前端。这是一个水平滚动功能。这是我被困的地方。

我尝试的是以下内容: 在UIScrollView中创建UIView1的副本并加载该副本。 以编程方式创建xib并加载它。

在这两种情况下,我都面临着汽车布局限制问题。当我加载第二个视图时,它会覆盖在现有视图的顶部。 我可以对克隆的UIView的帧大小进行硬编码并使其正常工作,但显然这不适用于跨设备。

所以我添加了约束 - 就像这样:

UIView

应用程序崩溃无法加载此约束,表明视图层次结构不支持此约束,因为未加载所有视图。

我将继续深入探讨如何解决这个问题,但我们将非常感谢您的帮助。这是我的func buildView(startX:CGFloat, model:CityModel) -> UIView { var frame:CGRect = CGRectMake(0, 0, insideScrollView.bounds.width, insideScrollView.bounds.height) var cityView:UIView = UIView(frame: frame) var lFrame:CGRect = CGRectMake(0, 0, 100,50) var cLabel:UILabel = UILabel(frame: lFrame) cLabel.text = model.name cLabel.sizeToFit() cLabel.textAlignment = .Center //cityView.addSubview(cLabel) cityView.layer.backgroundColor = UIColor.blueColor().CGColor cityView.setTranslatesAutoresizingMaskIntoConstraints(false) var constX = NSLayoutConstraint(item: cityView, attribute: NSLayoutAttribute.LeftMargin, relatedBy: NSLayoutRelation.Equal, toItem: cityScrollView, attribute: NSLayoutAttribute.LeftMargin, multiplier: 1, constant: 0) cityView.addConstraint(constX) return cityView } 方法。 Cities是包含视图数据的模型数组

viewDidLoad

1 个答案:

答案 0 :(得分:0)

代表@ k6sandeep发布答案。我没有在scrollview中加载视图,但是正在添加约束。因此,在加载内部视图后通过添加约束来修复相同的问题。