亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當使用自動布局時,如何調整CALLayer的錨點?

當使用自動布局時,如何調整CALLayer的錨點?

搖曳的薔薇 2019-06-28 15:27:25
當使用自動布局時,如何調整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個贊

我找到了一個簡單的方法。它適用于iOS 8和iOS 9。

例如在使用基于框架的布局時調整錨點:

let oldFrame = layerView.frame
layerView.layer.anchorPoint = newAnchorPoint
layerView.frame = oldFrame

當您使用自動布局調整視圖的錨點時,您會做同樣的事情,但以約束的方式。當錨點從(0.5,0.5)更改為(1,0.5)時,LayerView將以視圖寬度的一半的距離向左移動,因此需要對此進行補償。

我不理解問題中的約束,因此,假設您使用常量:layerView.centX=SuperView.centX+常量,添加了一個相對于SuperView中心X的中心X約束。

layerView.layer.anchorPoint = CGPoint(1, 0.5)let centerXConstraint = .....centerXConstraint.constant = centerXConstraint.constant + layerView.bounds.size.width/2


查看完整回答
反對 回復 2019-06-28
  • 3 回答
  • 0 關注
  • 721 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號