當(dāng)使用自動(dòng)布局時(shí),如何調(diào)整CALLayer的錨點(diǎn)?自從提出這個(gè)問(wèn)題以來(lái),事情就有了進(jìn)展,見(jiàn)這里最近的一個(gè)很好的概述。在自動(dòng)布局之前,您可以通過(guò)存儲(chǔ)框架、設(shè)置錨點(diǎn)和恢復(fù)框架來(lái)更改視圖層的錨點(diǎn),而無(wú)需移動(dòng)視圖。在自動(dòng)布局世界中,我們不再設(shè)置框架,但是約束似乎無(wú)法完成將視圖的位置調(diào)整到我們想要的位置的任務(wù)。您可以破解這些約束來(lái)重新定位視圖,但是在旋轉(zhuǎn)或其他調(diào)整大小的事件中,這些約束會(huì)再次變得無(wú)效。由于它創(chuàng)建了“布局屬性(左和寬)的無(wú)效配對(duì)”,下面的好主意不起作用: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,調(diào)整后的錨點(diǎn)的視圖,以其寬度的一半加20(從SuperView的左側(cè)邊緣插入的距離)。是否可以在不改變視圖位置的情況下更改錨點(diǎn),而該視圖是用自動(dòng)布局的?是否需要使用硬編碼值并在每次旋轉(zhuǎn)時(shí)編輯約束?我希望不會(huì)。我需要改變錨點(diǎn),這樣當(dāng)我將轉(zhuǎn)換應(yīng)用到視圖時(shí),我就得到了正確的視覺(jué)效果。
3 回答

阿晨1998
TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
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 關(guān)注
- 727 瀏覽
添加回答
舉報(bào)
0/150
提交
取消