探究transform与center

测试1 记录下控件的初始center,修改他的center,然后再重设他的center,把他恢复为初始位置
结果:成功
过程: 一个控件一开始的frame是(0,0,20,20),他的中心点就是(10,10)
设置他的center为100,100;
于是他会往右走90,往下走90,frame是(90,90,20,20),他的中心点是(100,100)
再次设置他的center为10,10,他会回到起点

测试2 记录下控件的初始center,修改他的transform,然后再重设他的center,把他恢复为初始位置
结果:修改transform并不能改变他的中心点,要想重新回到初始位置只能通过设置transform为Identity,或者把他的中心点减去移动的transform的值
过程:一个控件的一开始的frame是(0,0,20,20),他的中心点就是(10,10)
设置他的transform:CGAffineTransformMakeTranslation(100, 500);
于是他会往右走100,往下走500,frame是(100,500,20,20),他的中心点是(10,10)
发现中心点没有改变,所以接下来继续重设他的中心点为最初的center没有用

测试3 记录下控件的初始center,修改他的center,然后再重设他的transform,把他恢复为初始位置
结果:无法修改transform。

结论:center是指控件在父视图上的位置,可是修改了控件的transform后,就并不能很好地修改center来改变控件的位置了。 因为transform改变了控件的真实位置,但是并没有改变控件的center。 直接修改center的话或者frame,会在当前位置进行移动。 最好是先恢复transform为identity

你可能感兴趣的:(探究transform与center)