Subclassed UIView不可见,但内容可见

时间:2014-11-07 22:21:47

标签: ios swift uiview pure-layout

我将UIView:http://pastebin.com/MVk1XmPS子类化,当我将它添加到UIViewController的另一个视图时:

self.myView = MyView.newAutoLayoutView()
self.myView.backgroundColor = UIColor.redColor()
self.view.addSubview(self.myView)

缺少红色背景。似乎myView没有宽度和高度。但是内容是可见的:

foto 07 11 14 23 12 36

我必须对维度进行硬编码:

self.myView.autoSetDimensionsToSize(CGSize(width: 100, height: 100))

但不应该根据内容的大小自动增长?我使用swift,xcode6.1和iOS8.1

1 个答案:

答案 0 :(得分:2)

视图不会自动增长以适应其内容。如果您在视图上启用clipsToBounds,则会看到内容消失。或者,如果您将一个按钮作为内容的一部分,您将看到它,但无法与它进行交互,因为它超出了superview的范围。

在您的子类中,您可以实现sizeToFitsizeThatFits:方法,但这些方法不会被系统自动调用。您应该考虑在故事板中为视图分配约束。如果您没有使用情节提要,则需要在viewWillLayoutSubviewslayoutSubviews方法中指定一个框架。

如果您实施intrinsicContentSize,故事板也会更好地了解您的自定义视图。