Khi tôi đặt thuộc tính biến đổi của CALayer của tôi với CATransform3DRotate, lớp được xoay đúng cách. Tuy nhiên, các cạnh của lớp bị lởm chởm và không chống răng cưa. Tôi đã đọc một vài bài viết về đề tài này:Chống răng cưa đường chéo cạnh của CALayer
iPhone: CALayer + rotate in 3D + antialias?
iPhone - Jagged Edges when applying perspective to CALayer
tôi đã cố gắng để kết hợp lời khuyên của họ bằng cách thiết lập các thuộc tính sau vào lớp đường chéo của tôi
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;
tôi cũng đã ghi đè phương thức drawLayer: inContext: của lớp chéo của tôi để đảm bảo chống răng cưa:
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
{
CGContextSetAllowsAntialiasing(context, true);
CGContextSetShouldAntialias(context, true);
CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
CGContextFillRect(context, self.bounds);
}
Tôi đang thiếu gì?
Tuyệt vời! Bài đăng tuyệt vời. – tassock
Có một giải pháp thay thế ồ ạt tốt hơn vào phiên bản 7.0 trở lên. http://stackoverflow.com/questions/6245276/anti-alias-diagonal-edges-of-calayer/19443644#19443644 – cbowns