當我使用CATransform3DRotate對CALayer的transform屬性進行設置時,圖層會正確旋轉。但是,圖層的邊緣是鋸齒狀的,不會消除鋸齒。我讀過關於這個問題的一些文章:CALayer的抗混疊對角線邊緣
iPhone: CALayer + rotate in 3D + antialias?
iPhone - Jagged Edges when applying perspective to CALayer
我試着通過我的斜層
CALayer* layer = myView.layer;
layer.shadowOpacity = 0.01;
layer.edgeAntialiasingMask = kCALayerTopEdge | kCALayerBottomEdge | kCALayerRightEdge | kCALayerLeftEdge;
layer.borderWidth = 1.0;
layer.borderColor = [UIColor clearColor].CGColor;
layer.backgroundColor = [UIColor greenColor].CGColor;
我上設置以下屬性,納入他們的建議還重寫了drawLayer:inContext:我的對角線層的方法以確保抗鋸齒:
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
{
CGContextSetAllowsAntialiasing(context, true);
CGContextSetShouldAntialias(context, true);
CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
CGContextFillRect(context, self.bounds);
}
我錯過了什麼?
太棒了!好帖子。 – tassock 2011-09-11 22:00:11
7.0和更高版本中有一個更好的選擇。 http://stackoverflow.com/questions/6245276/anti-alias-diagonal-edges-of-calayer/19443644#19443644 – cbowns 2014-02-28 01:03:10