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

Objective c 如果子视图更改大小,请调整父视图的大小,objective-c,cocoa,resize,nsview,Objective C,Cocoa,Resize,Nsview,我是Cocoa的新手,正在编写一个自定义的InspectorView。 父视图(InspectorView)包含多个子视图(InspectorCategories) 如果我打开一个类别(子视图),我必须调整/重新显示我的父视图? 我发现,这是不可能通过自动调整大小面具-这是正确的吗 我在我的父视图中尝试了使用resizeSubviewsWithOldSize,但在调整子视图的大小时没有调用它 如何实现此行为?不,不可能通过自动调整掩码大小来实现。自动调整大小掩码定义当视图的superview更改

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

如果我打开一个类别(子视图),我必须调整/重新显示我的父视图? 我发现,这是不可能通过自动调整大小面具-这是正确的吗

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


如何实现此行为?

不,不可能通过自动调整掩码大小来实现。自动调整大小掩码定义当视图的superview更改边界时如何调整视图大小


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

我认为有两个部分可以实现您想要的功能:

(a) 在父视图中,替代该方法,使其计算出适合调整大小的子视图的新尺寸

(b) 在子视图中,重写setFrame:方法,并在更改帧大小后,调用[self.superview sizeToFit]来调整superview的大小,可能如下所示:

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

谢谢你的回答。这是一个很好的UIView方法。但是,NSView中没有此类方法。