2014-06-24 13 views
1

我有一个awakeFormNib功能,增加了一些子视图。它没有使用自动布局。通常它看起来很完美。在某些机器上,其中一个子视图太小。只要我调整窗口大小(用鼠标),它都能完美地展现出来。看起来seme布局操作发生在这些机器上的awakeFromNib之前(猜测)。我已经fonnd一个非常不雅的替代方案,在awakeFromNib结束时,我打电话SETFRAME的子视图逐个像素来改变它的大小。这必须与使用鼠标调整大小的效果相同,因为它会导致布局按预期显示。布局在awakeFromNib的结束不正确 - 需要调整来纠正它

所以我的问题是这样的:我可以调用一个函数,我可以调用窗口或它的子视图,导致调整大小(使用emouse)或通过更改代码中的框架大小导致相同的布局操作。我曾尝试调用setNeedsLayout和setNeedsDisplay:但没有成功。

回答

3

您需要重构所有的框架代码awakeFromNib到:

- (void)layoutSubviews { 
    [super layoutSubviews]; 

} 

为什么?

因为这是当视图知道它的大小尺寸是被调用的方法。只要视图框架发生变化,该方法也会被调用。