iPhone:CALayer+;在3D+中旋转;反别名?
一个iPhone SDK问题:我正在屏幕上绘制UIImageView。我在3D中旋转了它,并提供了一点透视效果,因此图像看起来像是以一定角度指向屏幕。一切正常。现在的问题是,结果图片的边缘似乎根本没有抗锯齿。有人知道怎么做吗 基本上,我正在实现我自己版本的CoverFlow(是的,是的,设计专利等等),使用quartz 3d转换来完成一切。它工作得很好,只是每个封面都没有抗锯齿,苹果版也没有 我尝试过摆弄CALayer的edgeAntialisingMask,但没有任何帮助-默认设置是每个边都应该进行抗锯齿iPhone:CALayer+;在3D+中旋转;反别名?,iphone,3d,calayer,antialiasing,Iphone,3d,Calayer,Antialiasing,一个iPhone SDK问题:我正在屏幕上绘制UIImageView。我在3D中旋转了它,并提供了一点透视效果,因此图像看起来像是以一定角度指向屏幕。一切正常。现在的问题是,结果图片的边缘似乎根本没有抗锯齿。有人知道怎么做吗 基本上,我正在实现我自己版本的CoverFlow(是的,是的,设计专利等等),使用quartz 3d转换来完成一切。它工作得很好,只是每个封面都没有抗锯齿,苹果版也没有 我尝试过摆弄CALayer的edgeAntialisingMask,但没有任何帮助-默认设置是每个边都应
谢谢 您可以尝试在图像边缘添加一些透明像素,方法是将UIImageView放在稍微大一点的空视图中,然后对其应用旋转,或者更改源图像。如果只旋转一个图像,则使用一种技巧可以解决问题。试着设置 layer.shadowOpacity=0.01
在那之后,3D旋转后图片看起来会更平滑灰心答案给出了一个非常简洁的结果 然而,这有时会让事情变得非常滞后! 添加光栅化有点帮助:
.layer.shadowOpacity = 0.01;
.layer.shouldRasterize = YES;
我知道问题/答案很旧,但我刚刚找到了它。我遇到了一个类似的问题,通过只设置shouldRasterize=YES解决了这个问题,但是因为我重新使用了我的视图(和图层),shouldRasterize=YES扼杀了性能 幸运的是,我找到了一个解决方案,在正确的时间打开shouldRasterize=NO,以恢复应用程序的性能 我在这里发布了一个解决方案:你可以试试这个 方法:使用
图层。应光栅化
创建一个超图层
/超视图
,在所有4个方向上都大1个像素
在superlayer
/superview
启用层。应在原始层上光栅化
方法:绘制到UIImage
- 将内容绘制到UIImage
- 确保内容周围有一个1像素的透明边框
- 显示图像
参考:将UIImageView
放在一个更大的视图中,然后应用一个变换将没有效果——子层不会合成到它们的父层中,而是整个图形由GPU合成。不过,将透明像素添加到图像边缘应该可以正常工作。是否将edgeAntialiasingMask
设置为kCALayerLeftEdge | kCALayerRightEdge | kCALayerTopEdge | kCALayerBottomEdge
?是的,尝试过了。此外,该组合是该属性的默认值EMS透明边缘像素是一种方法(这样放大过滤器
和缩小过滤器
将处理它)是的,添加光栅化只会有一点帮助。但不幸的是,它仍然滞后。