在開發(fā)中,經(jīng)常會用到一些圓角效果,或者邊框效果,經(jīng)常用的方法是通過代碼直接去設(shè)置,比較方便快捷;
但是當我們通過 XIB創(chuàng)建出一個控件后,也需要這樣的一些圓角或邊框效果,能不能直接通過 XIB里面的一些方法直接設(shè)置呢?答案是有的
其主要設(shè)置的方式是通過在 XIB操作欄的User Defined Runtime Attributes中通過 KEY PATH去設(shè)置當前控件的屬性,具體步驟如下圖所示:
image.png
設(shè)置圓角最常用的是設(shè)置圓角,邊框顏色,因此需要用到的 key Path有一下幾個:
- layer.cornerRadius 遇绞,注意該 key 對應(yīng) Value 的 type 應(yīng)該設(shè)置為 String/Number
兩種類型均可(代碼設(shè)置弧度為:thisViewlayer.masksToBounds = YES) - layer.masksToBounds ,注意該 key 對應(yīng) Value 的 type 應(yīng)該設(shè)置為 Boolean ,
當右側(cè)出現(xiàn)對號時為YES(代碼圓角為:thisView.layer.masksToBounds = YES) - layer.borderWidth 鸣戴,注意該 key 對應(yīng) Value 的 type 應(yīng)該設(shè)置為 String/Number
兩種類型均可(代碼設(shè)置邊框?qū)挾葹?thisViewlayer.borderWidth = 2) - layer.borderColor , 注意該 key 對應(yīng) Value 的 type 應(yīng)該設(shè)置為
Color(代碼設(shè)置邊框顏色:thisView.layer.borderColor = [UIColor
redColor].CGColor)
其實如果你從上面一直敲下來的話:
你會發(fā)現(xiàn)只有1和2的兩句代碼是有效的;
3,4兩句代碼看起來并沒有效果
原因:其實是因為在設(shè)置borderColor的時候,需要接受的是一個CGColor,而在 key Path中只有Color,其實就是 UIColor,類型是不對的,因此并沒有正確顯示想要展現(xiàn)的顏色.
因此這樣的寫法是有問題的.
我是通過添加一個CALayer的類擴展實現(xiàn)的,將key Path中設(shè)置的UIColor轉(zhuǎn)換成為CGColor,為邊框設(shè)置顏色,實現(xiàn)如下:
#import "CALayer+XibBorderColor.h"
#import <UIKit/UIKit.h>
@implementation CALayer (XibBorderColor)
- (void)setBorderColorWithUIColor:(UIColor *)color
{
self.borderColor = color.CGColor;
}
@end
這樣以后,只需要將key Path中的layer.borderColor修改成為layer.setBorderColorWithUIColor 就可以了