簡體   English   中英

CALayer Antialiasing不如UIView抗鋸齒

[英]CALayer Antialiasing not as good as UIView antialiasing

我一直在嘗試使用CALayer制作圓形繪圖動畫。 這一切都運作良好,但問題是 - 繪制圓圈不足以抗鋸齒。 邊框有點過於粗糙(如果使用柵格化,則會模糊)。 (啟用AntiAliasing)

也嘗試過:

edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;

無濟於事。

這是一個沒有光柵化的樣子: 在此輸入圖像描述

以下是光柵化的示例:(嘗試從1.0到4.0的值(只是為了確定。結果 - 相同。))

在此輸入圖像描述

這是同一個圓圈,但是在UIView中繪制的是:

在此輸入圖像描述

你可以看到,使用UIView drawrect繪制的圓圈看起來好多了。

我不能使用UIView的原因是因為我需要動畫圓填充。 使用CALayer非常簡單,但是要在UIView上做同樣的事情,我真的不知道它是否可能。 (我可以嘗試啟動drawrect:每1/60秒,但我認為它會變得遲鈍,因為它不是那樣的)。

那么 - 有沒有人有任何解決方案如何在CALayer上繪制圓圈/線條與UIView上繪制的相同?

我之前在視網膜設備上的CALayer中出現像素化繪圖的問題。 (我假設您在視網膜設備上看到了問題)執行以下操作修復了我遇到的問題:

layer.contentsScale = [[UIScreen mainScreen] scale];

您不應該處理光柵化或抗鋸齒。 在我自己的代碼中,我最初實現了向UIView繪制內容,后來我將其更改為在CALayer繪制,並且只需將contentsScale屬性設置為兩個繪制相同。

暫無
暫無

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

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