7

如何获得我正在控制的视图或子视图的实际尺寸?例如:

UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,100)];
[self addSubview:firstView];

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 230, 120)];
[firstView addSubview:button];

如您所见,我的button对象超出了它被添加到的视图的尺寸。

考虑到这一点(假设有许多对象被添加为子视图),我如何确定的实际宽度和高度firstView

4

3 回答 3

4

如果您希望按钮具有与 firstView 相同的宽度和高度,您应该使用 UIView 的 bounds 属性,如下所示:

UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,100)];
[self addSubview:firstView];

UIButton *button = [[UIButton alloc] initWithFrame:firstView.bounds];
[firstView addSubview:button];

要获得 firstView 的宽度/高度,您可以执行以下操作:

CGSize size = firstView.bounds.size;
NSInteger width = size.width;
NSInteger height = size.height;
于 2013-02-13T13:09:14.650 回答
0

第一个视图实际上是 200 x 100。但是,除非您使用clipsToBounds.

您的问题的一个更好的解决方案是停止添加超出尺寸的视图或停止调整视图大小,以便它们在适当的情况下溢出可用空间。

(要实际计算包括层次结构中所有子视图的完整边界并不难,只是很多工作实际上不会让你到达任何地方。UIView碰巧允许视图大于它们的容器,但它不一定给出任何保证什么会正常工作,如果被利用,可能会成为错误的来源。原因clipsToBounds可能是剪辑很昂贵,但在动画过程中是必要的,其中子视图可能会暂时移出边界以达到效果从视图中删除。)

于 2013-02-13T13:09:35.677 回答
0

firstview.frame.size.width firstview.frame.size.height

于 2013-02-13T13:11:05.727 回答