2013-04-08 54 views
0

CALayer在縮放時如何平滑地繪畫?CALayer知道我在縮放時不知道什麼

從第三張(最高)圖片中可以看出,白色邊框用精確的anti-aliased進行渲染。

但是我的標籤(儘管我設置了contentScaleFactor)和我的手繪圓圈(即使我將anti aliasing打開)都沒有。

如何爲UIKit組件或手繪圖形提供抗鋸齒渲染?可以像CALayer一樣順暢地進行縮放。

有什麼魔力?

small medium large

白色邊框使用視圖的CALayer的得出:

self.layer.cornerRadius = frame.size.width/2.0f ; 
    self.layer.borderColor = [UIColor whiteColor].CGColor ; 
    self.layer.borderWidth = 3.0f ; 

的數字是UILabel的

CGFloat contentScale = self.zoomScale * [UIScreen mainScreen].scale; // Handle retina 
    label.contentScaleFactor = contentScale; 

並考慮:

typedef struct { 
     CGRect  rect ; 
     CGColorRef color ; 
    } EventColor ; 

4圈使用CoreGraphics中

::CGContextSetAllowsAntialiasing(context, true) ; 
    ::CGContextSetShouldAntialias(context, true) ; 
    // ... 
    EventColor ec = ... 
    // ... 
    ::CGContextSetFillColorWithColor(context, ec.color) ; 
    ::CGContextFillEllipseInRect(context, ec.rect) ; 

回答

0

事實證明,我誤解了contentScaleFactor是爲那些畫,並發現我真的是後的CALayer的contentScale

其結果是,drawRect方法在任何UIView子類可以繼續假裝變焦規模總是被設置爲1.0,條件是該視圖的層的contentScale設置,以反映滾動視圖的當前縮放級別。上述

該示例假定滾動視圖包含一個非不透明的容器視圖又包含其layer.contentScale需要調整每一個實際視圖。

+0

它是contentScale還是contentsScale?注意第二個中額外的's' – 2013-05-08 19:41:12

相關問題