zoukankan      html  css  js  c++  java
  • 实现UIView任意圆角+绘制阴影

    给UIView设置圆角时,传统方式都是设置layer的masksToBounds 为 YES时,这种方式会触发离屏渲染(offscreen rendering),导致APP的帧率下降,特别是如果在cell上这么用,tableView滑动时特别耗性能,会有明显卡顿。
     
     CGSize viewSize = self.frame.size;
        CAShapeLayer *maskLayer = [CAShapeLayer layer];
        maskLayer.frame = CGRectMake(0, 0, viewSize.width, viewSize.height);
        
        CAShapeLayer *shapeLayer = [CAShapeLayer layer];
        shapeLayer.frame = CGRectMake(0, 0, viewSize.width, viewSize.height);
        shapeLayer.fillColor = [UIColor clearColor].CGColor;
        shapeLayer.strokeColor = borderColor.CGColor;
        shapeLayer.lineWidth = borderWidth;
        
        UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, viewSize.width, viewSize.height) cornerRadius:radius];
        shapeLayer.path = path.CGPath;
        maskLayer.path = path.CGPath;
        
        [self.layer insertSublayer:shapeLayer atIndex:0];
        [self.layer setMask:maskLayer];
    

    还有一种更加简单的,还可以解决阴影和图片等冲突问题

    self.layer.shadowColor = shadowColor.CGColor;
        self.layer.borderColor = self.layer.shadowColor; // 边框颜色建议和阴影颜色一致
        self.layer.borderWidth = 0.000001; // 只要不为0就行
        self.layer.cornerRadius = radius;
        self.layer.shadowOpacity = shadowOpacity;
        self.layer.shadowRadius = shadowRadius;
        self.layer.shadowOffset = shadowOffset;
    
  • 相关阅读:
    Ubuntu 安装和使用 Supervisor(进程管理)
    Ubuntu查看端口占用及关闭
    Ubuntu 上安装 SQL Server 并创建数据库
    Kafka常用命令
    sql bug
    TiDB之PCTP(数据库专家)
    04 MySQL之函数
    05 MySQL之查询、插入、更新与删除
    03 MySQL之数据类型和运算符
    06 MySQL之索引
  • 原文地址:https://www.cnblogs.com/nelsen-chen/p/10695814.html
Copyright © 2011-2022 走看看