iOS UIView、UIImageView旋转产生边界锯齿的完美解决方法
2017-09-26 09:11
3167 查看
在项目中需要取相册的第一张照片展示出来,并且UIImageView需要一个白色的2pt宽、6pt圆角的边框,并且需要对imageView进行一定角度的旋转。如果仅仅对imageView进行旋转的话会导致view边缘锯齿化,经查阅资料,有这样的解决办法:
这样会给image加一个1像素的透明边框,从而消除锯齿。
在iOS 7以上,苹果为我们提供了一个属性:allowsEdgeAntialiasing来进行锯齿的消除:
这样也可以将锯齿消除。
但是在图片旋转后,仅仅设置allowsEdgeAntialiasing为YES,还是可以看到UIImageView边缘有细小的锯齿,我们可以通过再设置layer的shouldRasterize属性为YES来消除这些细小的锯齿:
未进行任何处理
将allowsEdgeAntialiasing属性设置为YES
将shouldRasterize、allowsEdgeAntialiasing属性均设置为YES
解决办法
如果是imageView的话,可以对UIImage进行重绘:- (UIImage *)antiAlias { CGFloat border = 1.0f; CGRect rect = CGRectMake(border, border, self.size.width-2*border, self.size.height-2*border); UIImage *img = nil; UIGraphicsBeginImageContext(CGSizeMake(rect.size.width,rect.size.height)); [self drawInRect:CGRectMake(-1, -1, self.size.width, self.size.height)]; img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIGraphicsBeginImageContext(self.size); [img drawInRect:rect]; UIImage* antiImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return antiImage; }
这样会给image加一个1像素的透明边框,从而消除锯齿。
在iOS 7以上,苹果为我们提供了一个属性:allowsEdgeAntialiasing来进行锯齿的消除:
layer.allowsEdgeAntialiasing = YES;
这样也可以将锯齿消除。
但是在图片旋转后,仅仅设置allowsEdgeAntialiasing为YES,还是可以看到UIImageView边缘有细小的锯齿,我们可以通过再设置layer的shouldRasterize属性为YES来消除这些细小的锯齿:
layer. shouldRasterize = YES;
layer.allowsEdgeAntialiasing = YES;
效果展示
下面的三张图分别为:未进行任何处理
将allowsEdgeAntialiasing属性设置为YES
将shouldRasterize、allowsEdgeAntialiasing属性均设置为YES
相关文章推荐
- UIView和UIImageView 旋转消除锯齿方法
- ios UIImageView添加图片动画效果,添加了手势之后,依然没有反应的解决方法
- IOS--UIViewUIButtonUIImageView设置圆角、阴影、边框的方法
- iOS上直接缩小UIImageView的大小会产生锯齿,可以先将其缩放后再使用.
- IOS--UIViewUIButtonUIImageView设置圆角、阴影、边框的方法
- iOS拍照后图片自动旋转90度的完美解决方法
- iOS开发:Xcode 7之后viewForHeaderInSection、viewForFooterInSection设置内容不产生效果的解决方法
- iOS控件——UIView与UIImageView播放动画的实现方法
- UIImagePickerController选取图片后在判断图片方向,解决保存图片或重绘图片后旋转90度的方法
- IOS怎么设置View的背景会比较顺畅比较好的解决方法
- ios:当你碰到tableview cell里报nan错误时的解决方法
- iOS UIImage扩展方法(category):放大、旋转、合并UIImage、增加渐变层、添加阴影、调节透明度、保存到相册
- IOS UISplitViewController之 解决 密码框添加之后 调用子视图的转向方法之时 对象为空
- ios tableView那些事 (十六) UITableView中Cell重用机制导致内容重复解决方法
- 抗锯齿:在画图时,由于旋转或者缩放后,会产生锯齿,可以通过这样解决。
- ios tableView那些事 (十六) UITableView中Cell重用机制导致内容重复解决方法
- iOS UIImage扩展方法(category):放大、旋转、合并UIImage、增加渐变层、添加阴影、调节透明度、保存到相册
- 打开键盘遮住View的问题解决方法-IOS开发
- iPhone开发笔记(21)iOS 6旋转问题解决方法汇总
- 【IOS】扩展UIImageViewEx实现:手势移动,旋转,缩放(附带一个收缩的文字标签功能)