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


    方法一、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对象无法构成,则考虑方法三。

  • 相关阅读:
    rollback
    引用类型(C# 参考)
    委托(C# 编程指南)
    解决“在证书存储区中找不到清单签名证书”
    C#语法——委托,架构的血液
    广东IP段列表
    mysql字段类型
    linux远程管理工具:putty
    SQL yog过期后教你怎么让他不过期
    js实现的美女瀑布流效果代码
  • 原文地址:https://www.cnblogs.com/sixindev/p/4505402.html
Copyright © 2020-2023  润新知