设置UIView圆角 cornerRadius 圆角有性能问题,用贝塞尔曲线代替

原创 2015年07月06日 21:24:33
  1. @interface UIView (RectCorner)  
  2.   
  3. @end  
  4.   
  5. @implementation UIView (RectCorner)  
  6. - (void)setCornerOnTop {  
  7.     UIBezierPath *maskPath;  
  8.     maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds  
  9.                                      byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)  
  10.                                            cornerRadii:CGSizeMake(10.0f10.0f)];  
  11.     CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];  
  12.     maskLayer.frame = self.bounds;  
  13.     maskLayer.path = maskPath.CGPath;  
  14.     self.layer.mask = maskLayer;  
  15.     [maskLayer release];  
  16. }  
  17. - (void)setCornerOnBottom {  
  18.     UIBezierPath *maskPath;  
  19.     maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds  
  20.                                      byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight)  
  21.                                            cornerRadii:CGSizeMake(10.0f10.0f)];  
  22.     CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];  
  23.     maskLayer.frame = self.bounds;  
  24.     maskLayer.path = maskPath.CGPath;  
  25.     self.layer.mask = maskLayer;  
  26.     [maskLayer release];  
  27. }  
  28. - (void)setAllCorner {  
  29.     UIBezierPath *maskPath;  
  30.     maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds  
  31.                                           cornerRadius:10.0];  
  32.     CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];  
  33.     maskLayer.frame = self.bounds;  
  34.     maskLayer.path = maskPath.CGPath;  
  35.     self.layer.mask = maskLayer;  
  36.     [maskLayer release];  
  37. }  
  38. - (void)setNoneCorner{  
  39.     self.layer.mask = nil;  
  40. }  
  41.   
  42. @end  


-----------------------------
2,这是给UIImageView的image添加圆角的方法(如果是加载网络图片必须等图片加载完成后调用):

- (UIImageView *)imageWithRoundedCornersSize:(float)cornerRadius 
{
    UIImageView *imageView = self;
    UIImage * original = self.image;
    // Begin a new image that will be the new image with the rounded corners
    // (here with the size of an UIImageView)
    UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, [UIScreen mainScreen].scale); //[UIScreen mainScreen].scale
    
    // Add a clip before drawing anything, in the shape of an rounded rect
    [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds
                                cornerRadius:cornerRadius] addClip];
    // Draw your image
    [original drawInRect:imageView.bounds];
    
    // Get the image, here setting the UIImageView image
    imageView.image = UIGraphicsGetImageFromCurrentImageContext();
    
    // Lets forget about that we were drawing
    UIGraphicsEndImageContext();
    
    return imageView;
}





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

小心别让圆角成了你列表的帧数杀手 --关于设置圆角导致卡顿的深层原因解析

本文是投稿文章,作者:空之境界(博客) 前言 在iOS的世界,圆角无处不在,而且必须存在。因为圆角是符合人类视觉安全体验的,圆角让人觉得舒适,而方角在潜意识层次是具有伤害体验的,因为尖...

解决layer层圆角引发的性能问题

有两种方式解决 1.使用 shouldRasterize (之前有文章讲过) 2.使用 CAShapeLayer和UIBezierPath 对2举例 - (void)viewDidL...

UIView,UIButton,UIImageView等设置圆角,设置阴影,设置边框的方法

在iOS开发中,任何可见视图都是继承于UIView的。    继承体系中,大部分UIView的属性适用于其任何孩子。 而UIView的layer属性可以绘制UIView的各种效果。其实我们看到的Vi...

iOS -实现UIView圆角显示的方法

添加一个UIView时,直角显示有时对于有强迫症的患者还真有点不舒服! 怎么实现UIview的圆角显示呢? 首先包含一个头文件: #import 其次设置两个属性: s...

iOS高效添加圆角效果实战讲解

iOS高效添加圆角效果实战讲解

iOS渐变和自定义圆角的实现

软件工程师在传统观念里可能就是写代码,完成项目需求。但对我而言,作为一名互联网从业者,不应该只是掌握一门技能,在平时的工作中也让自己充当产品经理,UI设计等角色,毕竟牛逼的用户体验是每个人喜欢的,不妨...

使用贝塞尔曲线设置圆角

最终效果图: 近日在项目中遇到一个问题,UIButton需要设置border,同时设置其中三个角为圆角,第四个角为直角,于是第一次我的代码是这样的[self.btnContent setBackgr...

IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)

原文地址:http://blog.csdn.net/rhljiayou/article/details/9919713 首先了解一下CGContextRef: An opaque ty...

IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)

首先了解一下CGContextRef: An opaque type that represents a Quartz 2D drawing environment. Graphics...

IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)

声明:原文转载自:http://blog.csdn.net/rhljiayou/article/details/9919713#首先了解一下CGContextRef:An opaque type th...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)