3

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

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

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

照片 07 11 14 23 12 36

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

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

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

4

1 回答 1

2

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

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

如果您实现,情节提要也会更喜欢您的自定义视图intrinsicContentSize

于 2014-11-07T22:25:08.997 回答