# The relationship between AnchorPoint and Position in Layer

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

// 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
``````
• 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)")
``````