Xcode自动布局与自定义视图

时间:2014-03-25 02:23:28

标签: ios xcode

我正在使用自动布局和自定义视图处理我的第一个项目。我的问题是:

我在Interface Builder中创建了我的自定义视图,然后添加了约束以在需要时拉伸视图,这是我想要的方式,但是,请考虑我的自定义视图类中的以下代码片段 -

// MyCustomView

-(id)initWithCoder:(NSCoder*)decoder
{
    self = [super initWithCoder:decoder];
    if(self != nil)
    {
        CGFloat layerWidth = self.bounds.size.width;
                CGFloat layerHeight = self.bounds.size.height;
    }
    return self;
}

此代码返回IB中设置的大小。我的绘图代码依赖于新的宽度和高度(如果视图已被拉伸)但我不知道如何检索它们。

1 个答案:

答案 0 :(得分:1)

首先,该代码非常愚蠢,因为您正在创建变量layerWidthlayerHeight并抛弃它们,这是毫无意义的。

其次,self.bounds.size始终是视图的宽度和高度。但是,在initWithCoder:中询问这一点是没有意义的,在视图放入界面之前很久就会发生(正如您所见),在自动布局发生之前甚至更长时间。如果您的绘图代码依赖于边界大小,则在绘制时检索边界大小。如果您需要再次绘制,因为视图已更改大小,并且如果这不是全部发生,则实现layoutSubviews以告知视图需要再次绘制。