获取iOS视图的实际尺寸

我如何获得我所控制的视图或子视图的实际维度? 例如:

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的实际宽度和高度?


如果你想让按钮的宽度和高度与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;

第一个视图确实是200 x 100.但是,除非使用clipsToBounds否则内部视图不会被剪切。

解决问题的最佳方法是停止添加超过维度的视图,或者停止调整视图大小,以便适当时溢出可用空间。

(要实际计算包括层次结构中所有子视图在内的全部范围并不难,只需要很多工作,但实际上并不能让你实现任何功能UIView恰好允许视图比它们的容器更大,但它并不一定任何关于什么都能正常工作的保证,如果被利用,可能会成为bug的根源clipsToBounds的原因可能是剪辑是昂贵的,但在动画中必须将子视图临时移出界限以达到效果然后再将它们从视图中移除。)


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

链接地址: http://www.djcxy.com/p/69313.html

上一篇: Get actual dimensions of iOS view

下一篇: How to have a browser gunzip an Ajax fetched gziped text file?