我将UIView:http://pastebin.com/MVk1XmPS子类化,当我将它添加到UIViewController的另一个视图时:
self.myView = MyView.newAutoLayoutView()
self.myView.backgroundColor = UIColor.redColor()
self.view.addSubview(self.myView)
缺少红色背景。似乎myView
没有宽度和高度。但是内容是可见的:
我必须对维度进行硬编码:
self.myView.autoSetDimensionsToSize(CGSize(width: 100, height: 100))
但不应该根据内容的大小自动增长?我使用swift,xcode6.1和iOS8.1
答案 0 :(得分:2)
视图不会自动增长以适应其内容。如果您在视图上启用clipsToBounds
,则会看到内容消失。或者,如果您将一个按钮作为内容的一部分,您将看到它,但无法与它进行交互,因为它超出了superview
的范围。
在您的子类中,您可以实现sizeToFit
或sizeThatFits:
方法,但这些方法不会被系统自动调用。您应该考虑在故事板中为视图分配约束。如果您没有使用情节提要,则需要在viewWillLayoutSubviews
或layoutSubviews
方法中指定一个框架。
如果您实施intrinsicContentSize
,故事板也会更好地了解您的自定义视图。