zoukankan      html  css  js  c++  java
  • 如何实现视图圆角效果的三种方法及比较——董鑫

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

  • 相关阅读:
    docker知识集锦
    kubernetes知识集锦
    redis知识集锦
    Java多线程知识集锦
    vscode离线安装插件
    jsoncpp的简易教程
    为什么要自动化测试?
    如何选择正确的自动化测试工具
    如何选择测试自动化工具?
    测试自动化的五大挑战
  • 原文地址:https://www.cnblogs.com/sixindev/p/4505402.html
Copyright © 2011-2022 走看看