I felt difficult to understand the relationship between AnchorPoint and Position in Layer. So I found this in stackoverflow. And it helped me a lot to understand it.
Through my testing I got some principle.
If a layer’s frame is already defined , the anchorpoint doesn’t affect the position of the layer.
If you change an anchorPoint of a layer which already has a frame and a position , the origin of the layer’s frame will be changed by the setting of anchorPoint.
let view = UIView(frame: CGRectMake(0,0,400,400)) view.backgroundColor = UIColor.grayColor() let label1 = UILabel(frame: CGRectMake(100,100,100,20)) label1.text = "Label1" print("AnchorPoint: \(label1.layer.anchorPoint) , Frame: \(label1.layer.frame)") print("Position: \(label1.layer.position)") label1.backgroundColor = UIColor.whiteColor() view.addSubview(label1) view // AnchorPoint to (1,1) label1.layer.anchorPoint = CGPoint(x: 1.0, y: 1.0) label1.text = "Label1" print("AnchorPoint: \(label1.layer.anchorPoint) , Frame: \(label1.layer.frame)") view.addSubview(label1) view
If you set up a layer’s anchorPoint before you set up the frame of the layer, the position of the layer will be affected by setting of the anchorPoint.
let label2 = UILabel() label2.layer.anchorPoint = CGPoint(x: 1.0, y: 1.0) label2.frame = CGRect(origin: CGPoint(x: 100,y: 100), size: CGSize(width: 100.0, height: 20.0)) print("AnchorPoint: \(label2.layer.anchorPoint) , Frame: \(label2.layer.frame)") print("Position: \(label2.layer.position)") let label3 = UILabel() label3.layer.anchorPoint = CGPoint(x: 0.0, y: 0.0) label3.frame = CGRect(origin: CGPoint(x: 100, y: 100), size: CGSize(width: 100.0, height: 20.0)) print("AnchorPoint: \(label3.layer.anchorPoint) , Frame: \(label3.layer.frame)") print("Position: \(label3.layer.position)")
0 κ°μ λκΈ:
Post a Comment