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

  • 相关阅读:
    mac iterm2配置
    Test注解的两个属性(转)
    稳定排序和不稳定排序(转)
    [转]异步机制与异步原理
    Flex学习笔记
    [转]有道云笔记markdown
    H5调试
    react生命周期方法
    ESLint 代码检查规范
    REST API
  • 原文地址:https://www.cnblogs.com/sixindev/p/4505402.html
Copyright © 2011-2022 走看看