frame 和 bounds 区别

区别:

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

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

 

特殊情况是什么?

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

代码如下:

- (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 上。

注意:view2的frame 设置的是 (0,0,100,100),按理说应该和view1的左上角重合,但是代码运行起来的结果如下: (并没有重合,这是因为我们设置了view1 的自身坐标系bounds)

160727_vkpU_2472425.png

 

 

bounds的有以下两个特点:

1. 它可以修改自己坐标系的原点位置,进而影想到“子view”的显示位置。

2. bounds,它可以改变的frame。如果bounds比frame大。那么frame也会跟着变大。这个作用更像边界和大小的意思,frame相当于边界,bounds相当于大小。

转载于:https://my.oschina.net/u/2472425/blog/1501469

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值