获取匿名NSView的大小

时间:2014-02-24 02:06:50

标签: cocoa autolayout nsview

似乎是一个简单的问题,但答案似乎非常重要。

问题陈述:

我有一个容器视图,可以从某个地方获取子视图,我想知道它的大小或者可能是什么大小。

在spring和struts世界中,我刚刚检查了autoResizeMask,如果它不可调整大小,那么在将它提供给containerView时检查视图的框架。如果它在某个方向上可以调整大小,我会认为该视图在这个方向上是无限的。

现在进入自动布局。在自动布局下,我会检查配件尺寸。如果拟合大小为某个大小/高度返回非零数字,那么视图应该是最小的而不违反任何约束。如果它为零,那么我应该认为视图是无界的(大或小)。是的,有固有的大小,但它有同样的问题。

所以问题是,如果我从一些随机nib加载一个视图,通用容器视图如何知道它应该使用哪个方法?也就是说,如果一个笔尖完全没有意识到自动布局,那么无论autoresizemask的值如何,内在大小总是返回0,0(至少在我的所有测试中)。我应该做的最后一件事是使用框架大小并检查从自动布局识别的笔尖加载的视图上的自动调整大小掩码,因为不能保证初始框架不是最佳尺寸也不是违反了视图的限制。

所以答案是检查translatesAutoresizingMaskIntoConstraints,因为文档明确指出,如果“你不是指定视图与其关系的人”,则nib中提供的视图不应设置translatesAutoresizingMaskIntoConstraints属性。容器“这显然就是这种情况。

我是否遗漏了某些东西,或者是否有一些众所周知的工作似乎正在使用?

提前致谢,

0 个答案:

没有答案