iPhone:CALayer+;在3D+中旋转;反别名?

iPhone:CALayer+;在3D+中旋转;反别名?,iphone,3d,calayer,antialiasing,Iphone,3d,Calayer,Antialiasing,一个iPhone SDK问题:我正在屏幕上绘制UIImageView。我在3D中旋转了它,并提供了一点透视效果,因此图像看起来像是以一定角度指向屏幕。一切正常。现在的问题是,结果图片的边缘似乎根本没有抗锯齿。有人知道怎么做吗 基本上,我正在实现我自己版本的CoverFlow(是的,是的,设计专利等等),使用quartz 3d转换来完成一切。它工作得很好,只是每个封面都没有抗锯齿,苹果版也没有 我尝试过摆弄CALayer的edgeAntialisingMask,但没有任何帮助-默认设置是每个边都应

一个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透明边缘像素是一种方法(这样
    放大过滤器
    缩小过滤器
    将处理它)是的,添加光栅化只会有一点帮助。但不幸的是,它仍然滞后。