• 如何实现视图圆角效果的三种方法及比较——董鑫


    方法一、layer.cornerRadius

    第一种方法最简单,通过层对象的cornerRadius属性实现圆角效果,代码如下:

    view.layer.cornerRadius = 8.0;
    view.layer.masksToBounds = YES;

    缺点是会有2次rending passes。首先off-screen画出带圆角的图,然后在视图上画第二次。

    方法二、通过UIBezierPath对象设置带圆角的作图区域

    这种方法的好处是只有一次rending pass,是三种方法中效率最高的。缺点是需要override视图。代码如下:

    - (void)drawRect:(CGRect)rect {
    CGRect bounds = self.bounds;

    [[UIColor whiteColor] set];
    UIRectFill(bounds);

    [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:8.0] addClip];
    [self.image drawInRect:bounds];
    }

    方法三、通过另一张mask图创建新图


    首先需要一张mask图,然后将这张mask图和原图合成,得到带圆角的新图。效率和方法一类似,合成新图等同于在off-screen作图。该方法的优点是可以不局限于圆角,全凭mask图控制。

    总结:

    如果要效率(例如要提高table view的滚动帧数),就多用方法二。要方便,自然是方法一。如果需要的特殊形状UIBezierPath对象无法构成,则考虑方法三。

  • 相关阅读:
    移动采编app
    分布式自动化测试
    appium --log-timestamp > appium.log
    处理安卓的弹窗
    Sublime text3修改tab键为缩进为四个空格
    安卓自动化测试——rf
    敏捷软件开发
    photoshop怎么旋转图片
    thinkPHP5.0模型实现软删除
    thinkPHP5.0数据查询表达式生成技巧
  • 原文地址:https://www.cnblogs.com/sixindev/p/4505402.html
Copyright © 2020-2023  润新知