“Renders with edge antialiasing”导致iOS 7中UIAlertView的延迟。

11
自从iOS 7以来,我发现我的UIAlertViews会有一种绘制延迟的情况-屏幕会变暗,UIAlertView的文本会在实际的警报框架出现之前短暂地出现在屏幕上。
我追踪到问题是由于在我的应用程序plist文件中将“Renders with edge antialiasing”标志设置为YES所致。关闭此选项可以解决问题(但是在任何旋转的视图上都会产生丑陋的锯齿,这也是我首先使用该标志来解决的问题)。
有人知道怎么做才能两全其美吗?即既具有边缘抗锯齿功能,又具有平滑的UIAlertViews。
编辑:从高层次来看,似乎能够切换“UIViewEdgeAntialiasing”就行了。或者如果有一种直接旋转UIView带有反锯齿效果的方法,那么这两个方法是否可行呢?

不确定为什么会被踩,但这显然是iOS的一个bug,希望能找到一个优雅的解决方案。无论如何,已在Bug Reporter中提交了报告。 - Keller
背景信息在这里:http://markpospesel.wordpress.com/2012/03/30/efficient-edge-antialiasing/ - Klaas
我在我的一个应用程序中遇到了同样的问题。即使在一个小的测试应用程序中也是如此。想知道是否有人打开了这个标志,但没有遇到同样的问题? - Klaas
1个回答

11
"使用边缘抗锯齿渲染非常昂贵!请谨慎使用。"

可以使用这个小技巧代替:

    view.layer.borderWidth = 1;
    view.layer.borderColor = [UIColor clearColor].CGColor;
    view.layer.rasterizationScale = [UIScreen mainScreen].scale;
    view.layer.shouldRasterize = YES;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接