如果子视图更改大小,请调整父视图的大小

时间:2011-09-27 13:48:11

标签: objective-c cocoa resize nsview

我是Cocoa的新手,我正在编写自定义InspectorView。 父视图(InspectorView)包含多个子视图(InspectorCategories)。

如果我解开一个类别(子视图),我必须调整/重新播放我的父母视图吗? 我发现这不可能通过自动调整大小的掩码 - 这是正确的吗?

我在父母视图中使用resizeSubviewsWithOldSize进行了尝试,但在调整子视图大小时没有调用它。

我该如何实现这种行为?

2 个答案:

答案 0 :(得分:2)

有两个部分可以完成我认为你想要的东西:

(a)在父视图中,覆盖sizeThatFits:方法,以便计算适合调整大小的子视图的新大小。

(b)在子视图中,覆盖setFrame:方法,在更改帧大小后,调用[self.superview sizeToFit]来调整superview的大小,可能是这样的:

-(void)setFrame:(CGRect)newFrame
{
    [super setFrame:newFrame];
    [self.superview sizeToFit];
}

答案 1 :(得分:0)

不,通过自动调整遮罩是不可能的。自动调整遮罩定义了当超视图更改边界时视图的大小调整方式。

子视图应该让其超级视图知道它需要的大小,例如通过委托调用。然后superview应调整自身和子视图的大小。