純代碼設(shè)置Button或者其他View的邊框?qū)傩?/p>
例: UIView* view = [[UIView alloc]init];
view.layer.borderWidth = 2.0;
view.layer.masksToBounds = YES;
view.layer.cornerRadius = 5.0;
view.layer.borderColor = [UIColorredColor].CGColor;
以下提供自定義控件的時(shí)候,使用Xib,或者用sb來進(jìn)行布局,那么這時(shí)候怎么來使用storyboard或者Xib給View設(shè)置邊框?qū)傩缘姆椒?/p>
其主要設(shè)置的方式是通過在 XIB操作欄的User Defined Runtime Attributes中通過 KEY PATH去設(shè)置當(dāng)前控件的屬性,具體步驟如下圖所示:
設(shè)置圓角最常用的是設(shè)置圓角,邊框顏色,因此需要用到的 key Path有一下幾個(gè):
- layer.cornerRadius 蹬音,注意該 key 對(duì)應(yīng) Value 的 type 應(yīng)該設(shè)置為 String/Number
兩種類型均可(代碼設(shè)置弧度為:thisViewlayer.masksToBounds = YES) - layer.masksToBounds ,注意該 key 對(duì)應(yīng) Value 的 type 應(yīng)該設(shè)置為 Boolean ,
當(dāng)右側(cè)出現(xiàn)對(duì)號(hào)時(shí)為YES(代碼圓角為:thisView.layer.masksToBounds = YES) - layer.borderWidth ,注意該 key 對(duì)應(yīng) Value 的 type 應(yīng)該設(shè)置為 String/Number
兩種類型均可(代碼設(shè)置邊框?qū)挾葹?thisViewlayer.borderWidth = 2) - layer.borderColor , 注意該 key 對(duì)應(yīng) Value 的 type 應(yīng)該設(shè)置為
Color(代碼設(shè)置邊框顏色:thisView.layer.borderColor = [UIColor
redColor].CGColor)
其實(shí)如果你從上面一直敲下來的話:
你會(huì)發(fā)現(xiàn)只有1和2的兩句代碼是有效的;
3,4兩句代碼看起來并沒有效果
原因:其實(shí)是因?yàn)樵谠O(shè)置borderColor的時(shí)候,需要接受的是一個(gè)CGColor,而在 key Path中只有Color,其實(shí)就是 UIColor,類型是不對(duì)的,因此并沒有正確顯示想要展現(xiàn)的顏色.
因此這樣的寫法是有問題的.
所以要通過添加一個(gè)CALayer的類擴(kuò)展來實(shí)現(xiàn),將key Path中設(shè)置的UIColor轉(zhuǎn)換成為CGColor,為邊框設(shè)置顏色,實(shí)現(xiàn)如下:
然后在你的分類.m文件中添加一個(gè)屬性
//
// Created by xiaoyige on 2019/8/26.
// Copyright ? 2019
#import "CALayer+ZLCALayer_XibBorderColor_h.h"
#import <UIKit/UIKit.h>
@interface CALayer ()
@property (nonatomic,strong) UIColor *borderColorWithUIColor;
@property (nonatomic,strong) UIColor *shadowColorWithUIColor;
@end
@implementation CALayer (ZLCALayer_XibBorderColor_h)
//keyPath中的keyt為borderColorWithUIColor
- (void)setBorderColorWithUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
//keyPath中的keyt為shadowColorWithUIColor
-(void)setShadowColorWithUIColor:(UIColor *)color {
self.shadowColor = color.CGColor;
}
@end
這樣以后,只需要將key Path中的layer.borderColor修改成為layer.borderColorWithUIColor 就可以了
添加陰影同理:
-(void)setShadowColorWithUIColor:(UIColor *)color {
self.shadowColor = color.CGColor;
}
只需要將key Path中的layer.shadow修改成為layer.shadowColorWithUIColor 就可以了親測有效
不用寫無用的廢物代碼了
常用
layer.masksToBounds
layer.cornerRadius
layer.borderWidth
layer.borderColorWithUIColor
layer.shadowColorWithUIColor