Mel*_*emi 26 iphone cocoa-touch antialiasing uiimageview uiimage
我有一个UIImageView(全帧和矩形),我正在用CGAffineTransform旋转.UIImageView的UIImage填充整个帧.旋转和绘制图像时,边缘会出现明显的锯齿状.有什么我可以做的让它看起来更好吗?显然没有背景消除锯齿.
Joh*_*ool 55
默认情况下,iOS上CoreAnimation图层的边缘不会被抗锯齿.但是,您可以在Info.plist中设置一个键,以启用边缘的抗锯齿:UIViewEdgeAntialiasing.
如果您不希望启用此选项的性能开销,则解决方法是在图像边缘周围添加1px透明边框.这意味着图像的"边缘"不再位于边缘,因此不需要特殊处理!
Pat*_*pel 27
新API - iOS 6/7
同样适用于iOS 6,如@Chris所述,但直到iOS 7才公开.
从iOS 7开始,CALayer拥有一个新属性allowsEdgeAntialiasing,在这种情况下完全符合您的要求,而不会产生为应用程序中的所有视图启用它的开销!这是CALayer的属性,因此要为您使用的UIView启用此属性 myView.layer.allowsEdgeAntialiasing = YES.
G S*_*G S 17
只需为图像添加1px透明边框即可
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, 0.0);
[image drawInRect:CGRectMake(1,1,image.size.width-2,image.size.height-2)];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
请记住设置适当的反别名选项:
CGContextSetAllowsAntialiasing(theContext, true);
CGContextSetShouldAntialias(theContext, true);
Run Code Online (Sandbox Code Playgroud)
我完全推荐以下库.
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
它包含许多有用的UIImage扩展,可以解决这个问题,还包括生成缩略图等的代码.
请享用!
| 归档时间: |
|
| 查看次数: |
18393 次 |
| 最近记录: |