2017-08-15 56 views
1

我有一個UIScrollView,其中包含一個「Draw View」,用戶可以用它來畫出徒手畫的UIBezierPath。它使用CATiledLayer,因此我可以放大而不模糊。EXC_BAD_ACCESS在使用CATiledLayer進行翻譯時撫摸UIBezierPath

當我繪製路徑時,儘管筆觸被多次調用,但沒有EXC_BAD_ACCESS錯誤。但是,當我使用CGAffineTransForm轉換路徑時,它在觸發路徑時拋出EXC_BAD_ACCESS錯誤之前持續不到幾秒鐘。它也可以在視覺上創造出道路上的人工製品。

我確定這是與CATiledLayer不喜歡翻譯有關的,因爲當我停止使用CATiledLayer時,沒有任何問題 - 路徑按預期轉換,沒有任何人爲因素。但是,我需要CATiledLayer進行縮放而不會模糊(據我所知,除了將contentscale因子設置爲縮放級別外,沒有其他解決方案)。

發生錯誤時,內存/ CPU使用率不正常。

值得注意的是,我使用的是iOS 11和Xcode 9測試版。 (編輯:也發生在iOS 10上,但仍然使用相同的Xcode 9 Beta)

我試圖打開殭屍對象,但它沒有提供任何有用的信息。

+0

但是你的密碼是祕密的? – matt

回答

0

CATiledLayer使用多個線程來繪製它的內容。許多UIKit操作需要從主線程完成。保持平鋪圖層優勢的最佳方法應該是使用核心圖形路徑而不是UIKit路徑。另請參閱Technical Q&A 1637

+0

我試圖繪製一個CGPath。現在,這種方式在翻譯時可以正常工作,但當我嘗試並*縮放*或旋轉它時,使用EXC_BAD_ACCESS會崩潰 – user3290287

+0

沒有您的代碼,任何人都無法爲您提供幫助。 – clemens