CALayer有2個非常重要的屬性:position和anchorPoint
@property CGPoint position;
用來設置CALayer在父層中的位置
以父層的左上角為原點(0, 0)
@property CGPoint anchorPoint;
稱為“定位點”、“錨點”
決定著CALayer身上的哪個點會在position屬性所指的位置
以自己的左上角為原點(0, 0)
它的x桐愉、y取值范圍都是0~1财破,默認值為(0.5, 0.5)
看仔細了,圖很多从诲,位置找好(注意紫色小方塊的位置)
來了哦左痢。重點的東西又來圖了
對于上面圖片比較蒙圈吧,嘻嘻接下來看文字咯
position和anchorPoint是CAlayer的兩個屬性.
我們以前修改一個控件的位置都是能過Frame的方式進行修改.
現在利用CALayer的position和anchorPoint屬性也能夠修改控件的位置.
這兩個屬性是配合使用的.
position:它是用來設置當前的layer在父控件當中的位置的.
所以它的坐標原點.以父控件的左上角為(0.0)點.
anchorPoint:它是決點CALayer身上哪一個點會在position屬性所指的位置
anchorPoint它是以當前的layer左上角為原點(0.0)
它的取值范圍是0~1,它的默認在中間也就是(0.5,0.5)的位置.
anchorPoint又稱錨點.就是把錨點定到position所指的位置.
兩者結合使用.想要修改某個控件的位置,我們可以設置它的position點.
設置完畢后.layer身上的anchorPoint會自動定到position所在的位置.
還是覺得很蒙圈嗎?好嘛俊性,我也比較懵
看代碼咯:
@interface ViewController ()
// 這是直接拖得一個view
@property (weak, nonatomic) IBOutlet UIView *orangeView;
@property (nonatomic, weak) CALayer *layer;
@end
---------------------華麗的分割線-----------
- (void)viewDidLoad {
[super viewDidLoad];
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(200, 200, 100, 100);
layer.backgroundColor = [UIColor redColor].CGColor;
self.layer = layer;
[self.view.layer addSublayer:layer];
//UIView的center,就是它內部layer的position.
NSLog(@"center = %@",NSStringFromCGPoint(self.orangeView.center));
NSLog(@"position = %@",NSStringFromCGPoint(self.orangeView.layer.position));
}
#這兩個輸出是一樣的喔《證據有圖為證》
// 這個呃略步,這個我不知道怎么解釋這個方法,常用的定页。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
// self.layer.position = CGPointMake(200, 200);
NSLog(@"center = %@",NSStringFromCGPoint(self.orangeView.center));
NSLog(@"position = %@",NSStringFromCGPoint(self.orangeView.layer.position));
self.orangeView.layer.anchorPoint = CGPointMake(0.5, 0);
}