2011-08-04 24 views
2

我有一个UIViewController内使用的自定义UIView。自定义视图需要一些自定义/编程布局。我目前正在做的是,从控制器“viewDidAppear”方法中,我调用一个自定义视图方法,我把它放在名为“layoutThisView”的地方。这似乎工作确定。定制方法在自定义视图中的子视图布局,或使用layoutSubviews/layoutIfNeeded

问题应该/我可以使用而不是这种方法的UIView layoutSubviews/layoutIfNeeded方法?这会有助于/是一个更好的方法吗?

回答

4

它可能会更好地使用layoutSubviews。只要视图需要布局,Cocoa Touch就会自动发送此消息 - 调整大小,改变方向,任何事情。一般来说,你可以随意使用框架。

警告:我认为,滚动UIScrollView可能导致layoutSubviews被称为其包含在视图,所以你可能要像做确保视图边界在这种情况下执行某些类型的布局之前,实际上已经改变了。我很乐意为评论者澄清,虽然 - 它只是一些我碰到的,不是我已经彻底的测试。

+0

所以我实现自定义的UIView一个layoutSubview方法,然后父UIControllerView会自动知道什么时候调用此方法? – Greg

+0

是的,没错,但我相信它是由窗口和视图层次策动。 –