2014-12-03 27 views
6

在人像模式(第一時間圖)完全擦除UIBezierPath&CAShapeLayer繪製的項目

enter image description here

旋轉爲橫向後,爲什麼上了年紀的形狀:

enter image description here

我使用UIBezierPath & CAShapeLayer在自定義UIView的圖層中繪製圓圈&。問題是,儘管設備旋轉後能夠成功繪製新線圈,但我無法刪除舊的繪製形狀。 設備旋轉後繪製的新形狀是完美的,我只需要從屏幕上移除那些粘在屏幕上的舊形狀。 附圖。

+0

請包括相關的代碼(例如,你做了什麼旋轉)。 – Rob 2014-12-03 15:58:13

回答

9

您可以刪除以前的CAShapeLayer(與removeFromSuperlayer)或替換之前的CAShapeLayerpath。你似乎會添加一個新圖層而不刪除舊圖層,但當然,如果沒有源代碼,這是不可能的。

+0

感謝您的建議,它將我推向了正確的軌道 – ystack 2014-12-04 09:53:11

3

啊! 找到解決方案 使用rootView.layer.sublayers = nil刪除所有較早的形狀

+4

我很高興您的技術能夠工作,但我仍然傾向於保留自己對添加的圖層的弱引用,然後調用它們的removeFromSuperlayer 。這種將'sublayers'設置爲'nil'的技巧對我來說似乎有點過分。另外我看過有關該技術存在問題的帖子(這種技術的行爲可能存在一些操作系統版本差異)。不過,我很高興你解決了你的問題。 – Rob 2014-12-04 11:31:44