zoukankan      html  css  js  c++  java
  • <iOS小技巧>UIview指定设置控件圆角

     
    一、用法:
     
    众所周知,设置控件的圆角使用layer.cornerRadius属性即可,但是这样设置成的结果是4个边角都是圆角类型。
     
    利用班赛尔曲线画角:
     
    //利用班赛尔曲线画角
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:button.bounds byRoundingCorners:(UIRectCornerBottomLeft |UIRectCornerBottomRightcornerRadii:CGSizeMake(1010)];
    CAShapeLayer *shapeLayer = [[CAShapeLayer allocinit];
    shapeLayer.frame = button.bounds;
    shapeLayer.path = bezierPath.CGPath;
    button.layer.mask = shapeLayer;
     
    关于设置指定位置控件圆角的枚举:
     
    typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
        UIRectCornerTopLeft     = 1 << 0, //左上
        UIRectCornerTopRight    = 1 << 1, //右上
        UIRectCornerBottomLeft  = 1 << 2, //左下
        UIRectCornerBottomRight = 1 << 3, //右下
        UIRectCornerAllCorners  = ~0UL    //全角
    };
     
     
    我的用法如下:
     
            UIBezierPath *maskPathA = [UIBezierPath bezierPathWithRoundedRect:_smsCodeTFiled.boundsbyRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopLeftcorner Radii:CGSizeMake(self.smsCodeTFiled.bounds.size.height/2.0, self.smsCodeTFiled.bounds.size.height/2.0)];
            CAShapeLayer *maskLayerA = [[CAShapeLayer alloc] init];
            maskLayerA.frame = _smsCodeTFiled.bounds;
            maskLayerA.path = maskPathA.CGPath;
            _smsCodeTFiled.layer.mask = maskLayerA;
            _smsCodeTFiled.layer.masksToBounds = YES;
            [self.view bringSubviewToFront:self.smsCodeLb];
     
    二、我的想法
     
    这个用法主要用于在左边有圆角,右边没有,或者相反的状况,但是注意一下就是,当设置多个UIView时,要记得不要声明相同的名称,例如   UIBezierPath *maskPath  后面声明其他UIview的时候也这么写  UIBezierPath *maskPath    就会出错了,记得不要重复声明同一个名称的对象就好。如果此方法没有生效,很大可能是Xib文件加了约束导致此方法不能生效。
     
    三、思考与行动
     
    1.尝试不用纯代码,利用Xib 能否使这某个UIView 指定位置设置圆角?
     
    2.尝试通过其他方法,来设置UIVIew指定位置圆角,你能想到几种方法?感觉那种最好用?哪种最不消耗内存。
     
  • 相关阅读:
    &#65279; 非法字符 原因 以及解决办法
    Windows Server 2008 R2 报错事件ID:10之WMI报错
    dig常用命令
    Windows系统下安装dig命令
    ueditor 编辑器的配置 实现上传图片---附效果图
    jquery.lazyload.js图片延迟加载(懒加载)--转载
    linux开机启动及运行级别、root密码丢失、单用户模式只读的处理方法
    储存与RAID--独立磁盘阵列
    tar命令打包和压缩与解压
    linux文件描述符、软硬连接、输入输出重定向
  • 原文地址:https://www.cnblogs.com/firstrate/p/7137866.html
Copyright © 2011-2022 走看看