Bri*_*ian 6 iphone core-animation core-graphics calayer uikit
我有一个CALayer,我应用透视图来使用a CGTransform3D并指定m14属性.应用透视时,图层具有锯齿状边缘.我听说有人提到在图层周围添加1px透明边框会有助于此.我不知道该怎么做.我已经尝试使用CALayer 的border和borderWidth属性,但锯齿状的边缘仍然存在.我也尝试减少所有方面1px绘制的矩形,但它也没有帮助.
任何帮助都会很棒!谢谢!
jla*_*z18 11
我发现这个问题的最佳解决方案是将shouldRasterize设置为YES并将光栅化比例设置为设备屏幕的比例.
myLayer.shouldRasterize = YES;
myLayer.rasterizationScale = UIScreen.mainScreen().scale // iOS
myLayer.rasterizationScale = NSScreen.mainScreen()!.backingScaleFactor // OSX
Run Code Online (Sandbox Code Playgroud)
这将为您平滑边缘.
我认为“我听到人们提到”是指对这个问题的讨论。建议使用以下代码在 CALayer 中实际绘制内容,使其在核心内容之外有一个一像素的透明边框
CGContextSetAllowsAntialiasing(theContext, true);
CGContextSetShouldAntialias(theContext, true);
Run Code Online (Sandbox Code Playgroud)
在该层的石英绘图中。
CALayer 上也有该edgeAntialiasingMask属性,但我在使用如下代码时没有看到任何影响:
layer.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;
Run Code Online (Sandbox Code Playgroud)
关于变换层边缘的抗锯齿。另请参阅此问题以了解对此的讨论,以及他们如何使用图像周围的单像素透明边框解决问题。
| 归档时间: |
|
| 查看次数: |
3934 次 |
| 最近记录: |