簡體   English   中英

設備旋轉期間CALayer子層不正常

[英]CALayer sublayer not graceful during device rotation

我直接在視圖的圖層上繪制了一個圓圈,設備旋轉看起來很完美。

繪制以func draw(_ rect: CGRect)方法進行。

然后,我在子層上繪制了圓圈並將其添加到init方法的視圖中。

我使用func draw(_ rect: CGRect)方法更新子圖層的框架。

在我看來,有時需要在設備旋轉完成之前更新子層。 因此,下面的第一張圖片。

一種使外觀更好的快速修復方法是裁剪子視圖圖層。 這樣,圓不會流到主視圖(橙色視圖)。

盡管這不能解決主要問題。 我不知道為什么添加子層會導致此問題。

我還在超級視圖的draw方法中繪制子層的內容。 橙色視圖不是超級視圖,超級視圖是中間的矩形

旋轉期間

旋轉期間

在此處輸入圖片說明

注意:我沒有添加示例代碼,因為我看到的所有示例都存在相同的問題。 其他人則通過對視圖的大小進行硬編碼來解決此問題,因此旋轉不會調整視圖的大小,並且旋轉不會導致這種情況。 他們還傾向於將視圖鎖定為縱向模式。

雖然,如果需要示例代碼,我可以創建一個簡單的示例。

我找到了解決該問題的方法。

在我看來,就像其他所有人一樣,都有同樣的問題。 這是因為圖層沒有約束。

我們不會在生產應用程序上看到這些問題,因為應用程序通常被鎖定為縱向模式。 蘋果似乎也傾向於使用圖像作為控件並避免繪制。 這是根據我閱讀的Ray Wenderlich 文章得出的。


解決方案基本上是使用子視圖(而不是子圖層),並使用子視圖中內置的圖層進行繪制。

本文介紹了該過程: https : //marcosantadev.com/calayer-auto-layout-swift/

這是顯示帶有子視圖和子圖層的旋轉的圖像。 子視圖由於存在約束而可以正常旋轉。 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM