今天突然看到bounds与frame,对于开发两年的我竟然懵懂了。。。此处省略一万个字
我就自己好好想了想,就将此时自己的想法写出来 以便自己后期不会生疏
之前很多例子拿两个视图举例说明了 我这里也就同样搬图用了😂
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
view1.backgroundColor = [UIColor redColor];
[self.view addSubview:view1];
UIView*view2 = [[UIView alloc]initWithFrame:CGRectMake(0,0,100,100)];
view2.backgroundColor = [UIColor yellowColor];
[view1 addSubview:view2];
frame表示的是自己的最左上角在父视图中的位置,它主要是子视图相对于父视图的位置,而bounds则是针对于点来说的。拿上面红色视图讲,红色的表面层全是点组成的,默认左上角为(0,0),而view2 frame中的x,y代表是view2左上角这个点是这些点中的哪一个,我们设置frame为(0,0,100,100),那么它的左上角这个点就是(0,0)这个点。如果改变了view1的bounds的x以及y值,那么则表示view1左上角的点变成了当前所设置的值,比如
[view1 setBounds:CGRectMake(-20, -20,200,200)];
意思就是view1左上角的点此刻在这个层上是(-20,-20),而(0,0)应该是向右x走20,向下y走20的那个点了,所以展示的结果是view2 跑到了view1(20,20)的位置了。
总结:改变bounds只会对在自己视图上的子视图产生影响,不会影响自己在父视图上的位置