zoukankan      html  css  js  c++  java
  • iOS之用xib给控件设置圆角、边框效果

    xib中为各种控件设置圆角

    • 通过代码的方式设置
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIView *myView;
    @end
    
    @implementation ViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.myView.layer.masksToBounds = YES;
        self.myView.layer.cornerRadius = 10;
    }
    • 通过xib快速设置圆角
      • 利用User Defined Runtime Attributes 进行设置

    身份检查器
    • 详细步骤介绍
      • 点击UI控件
      • 点击 Xcode 右侧上方身份检查器(左起第三个按钮)
      • 找到 Runtime Attributes 属性,通过Key Path 和 Value 进行设置
    • 设置圆角需要到的Key Path:
      • layer.cornerRadius ,注意该 key 对应 Value 的 type 应该设置为 String
      • layer.masksToBounds ,注意该 key 对应 Value 的 type 应该设置为 Boolean , 当右侧出现对号时为YES
      • 注意:经过测试,UILabel 必须设置设置 masksToBounds 这一键值对,才会出现圆角效果;UIButton、UIView、UIImageView 只需设置 layer.cornerRadius 这一键值对就可实现圆角效果

    Xib 为控件设置边框效果

    • 通过代码方式进行设置
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.myView.layer.borderColor = [UIColor redColor].CGColor;
        self.myView.layer.borderWidth = 2;
    }
    • 通过xib快速设置边框
      • 所用方法和上面所讲Xib设置圆角基本相同,唯一不同的就是设置 key Path 键值对
    • 设置边框需要到的Key Path:
      • layer.borderWidth ,注意该 key 对应 Value 的 type 应该设置为 String
      • layer.borderColor , 注意该 key 对应 Value 的 type 应该设置为 Color

        当我们满怀欣喜的运行程序的时候,你会发现结果并不会如你所想,边框效果并没有出现,那么难道是我们的方法不对么?

    • 不知道你有没有注意到 layer.borderColor 对应值得类型:Color;经常用代码进行边框设置的你,一定记得我们设置的颜色类型为CGColor,不错问题就出在了这上面
      • 按照上述方法我们设置的边框颜色为 UIColor 类型,当然不会起作用了啊。
    • 下面就给出一种简便的解决方法,我们只需要为 CALayer 创建一个分类就可以了,具体代码如下:
    CALayer+ZZYXibBorderColor.h
    
    #import <QuartzCore/QuartzCore.h>
    @interface CALayer (ZZYXibBorderColor)
    
    @end
    
    CALayer+ZZYXibBorderColor.m
    
    #import "CALayer+ZZYXibBorderColor.h"
    #import <UIKit/UIKit.h>
    
    @implementation CALayer (ZZYXibBorderColor)
    
    - (void)setBorderColorWithUIColor:(UIColor *)color
    {
    
        self.borderColor = color.CGColor;
    }
    
    @end

    注意此时,设置边框颜色就需要用 layer.borderColorWithUIColor来代替 layer.borderColor
    注意:当我们使用Xib设置控件圆角、边框的时候,如果将key Path写错,系统不会报错,但是运行不会实现理想的效果



    文/念男(简书作者)
    原文链接:http://www.jianshu.com/p/3f6a4343139e
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    62. Unique Paths (JAVA)
    60. Permutation Sequence (JAVA)
    56. Merge Intervals (JAVA)
    53. Maximum Subarray (JAVA)
    Java的volatile
    int和Integer的区别
    Java线程
    spark搭建部署
    spark源码编译
    Scala隐式转换和隐式参数
  • 原文地址:https://www.cnblogs.com/zhun/p/5616540.html
Copyright © 2011-2022 走看看