當使用自動布局時,如何調整CALLayer的錨點?自從提出這個問題以來,事情就有了進展,見這里最近的一個很好的概述。在自動布局之前,您可以通過存儲框架、設置錨點和恢復框架來更改視圖層的錨點,而無需移動視圖。在自動布局世界中,我們不再設置框架,但是約束似乎無法完成將視圖的位置調整到我們想要的位置的任務。您可以破解這些約束來重新定位視圖,但是在旋轉或其他調整大小的事件中,這些約束會再次變得無效。由于它創建了“布局屬性(左和寬)的無效配對”,下面的好主意不起作用:layerView.layer.anchorPoint = CGPointMake(1.0, 0.5);// Some other size-related constraints here which all work fine...[self.view addConstraint:
[NSLayoutConstraint constraintWithItem:layerView
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:layerView
attribute:NSLayoutAttributeWidth
multiplier:0.5
constant:20.0]];我在這里的目的是在layerView,調整后的錨點的視圖,以其寬度的一半加20(從SuperView的左側邊緣插入的距離)。是否可以在不改變視圖位置的情況下更改錨點,而該視圖是用自動布局的?是否需要使用硬編碼值并在每次旋轉時編輯約束?我希望不會。我需要改變錨點,這樣當我將轉換應用到視圖時,我就得到了正確的視覺效果。
3 回答

阿晨1998
TA貢獻2037條經驗 獲得超6個贊
let oldFrame = layerView.frame layerView.layer.anchorPoint = newAnchorPoint layerView.frame = oldFrame
layerView.layer.anchorPoint = CGPoint(1, 0.5)let centerXConstraint = .....centerXConstraint.constant = centerXConstraint.constant + layerView.bounds.size.width/2
- 3 回答
- 0 關注
- 721 瀏覽
添加回答
舉報
0/150
提交
取消