frame 和 bounds 区别

区别:

frame   是 一个控件在其父控件中的 位置尺寸spa

bounds 是一个控件以自身的坐标系为参考 获得的  位置  尺寸 。既然以自身为坐标系,那么 X 和 Y 在非特殊状况下就是 0 ,0   。    宽高  仍然仍是控件自身的 宽高。code

 

特殊状况是什么?it

答:主动设置bounds 改变它的默认位置。class

代码以下:object

- (void)viewDidLoad {
    [super viewDidLoad];


    
    UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 280, 250)];
    //设置 view1自身的 bounds
    [view1 setBounds:CGRectMake(-20, -20, 280, 250)];
    view1.backgroundColor = [UIColor redColor];
    [self.view addSubview:view1];//添加到self.view
    
    
    
    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    view2.backgroundColor = [UIColor yellowColor];
    //添加到view1上,[此时view1坐标系左上角起点为(-20,-20)]
    [view1 addSubview:view2];
 
    

}

view1 添加在 self.view 上,    view2 添加在 view1 上。im

注意:view2的frame 设置的是 (0,0,100,100),按理说应该和view1的左上角重合,可是代码运行起来的结果以下: (并无重合,这是由于咱们设置了view1 的自身坐标系bounds)img

 

 

bounds的有如下两个特色:

1. 它能够修改本身坐标系的原点位置,进而影想到“子view”的显示位置。view

2. bounds,它能够改变的frame。若是bounds比frame大。那么frame也会跟着变大。这个做用更像边界和大小的意思,frame至关于边界,bounds至关于大小。vi

相关文章
相关标签/搜索