在xib和storyBoard上設置layer屬性的兩種方法


xib和storyBoard在開發時給我們提供了很大的方便, 我們不但能在上面設置界面相關的屬性,以及部分類的設置。


在開發時,我們很多時候都是實用代碼對控件的layer層進行設置和修改,如果子類控件多了,每個都需要設置是不是很麻煩呢? 那麼, 我們能不能向對view一樣在xib上或者storyBoard上直接就能對layer進行相關設置呢?  答案當然是肯定的。 我們有兩種方法可以實現對layer的設置和修改。下面我們就來看看, 在xib和storyBoard上怎麼進行Layer相關的設置。


1. 首先看看第一種, 直接在Xcode上配置layer的屬性。


1). 首先打開Xcode,選中相應的控件(修改的控件)


2).打開屬性面板,找到右邊第三個檢查起 Identity Inspector (標識符檢查器, 也叫身份檢查器)


3).在這個檢查器中, 找到User Defined Runtime Attributes這個地方, 就可以在這個地方添加layer屬性相對應的值 。 如下圖:



設置好以上代碼, 運行項目看一下, 控件的相關外觀就按照我們所設置和期望的那樣, 被進行了修改, 看起來和用起來都很簡單吧。我們也不用書寫一大堆代碼去設置。






2. 第二種方法, 第二種方法雖然較第一種方法比較麻煩, 但更直觀一些, 可以像設置控件顏色一樣進行設置。   我們需要用到設置xib和storyBoard界面元素的宏以及屬性申明方式。


1). 首先我們創建一個類, 是UIView的擴展類, 這裏我就用 YSView, 在自定義類的.h文件中, 我們需要聲明相對應的屬性, 並使用IB_DESIGNABLE宏標記可顯示在interface中並動態刷新。


#import <UIKit/UIKit.h>

#import "UIView+YSView.h"


//在定義類的前面加上IB_DESIGNABLE

/**

 * 這個宏定義的作用是可以通過keypath動態看到效果,實時性,不過還是需要通過在keypath中輸入相關屬性來設置

 */

IB_DESIGNABLE  //動態刷新


@interface UIView (YSView)


//注意:加上IBInspectable就可以可視化顯示相關的屬性

/**

 * 可視化設置邊框寬度

 */

@property (nonatomic,assign)IBInspectable CGFloat borderWidth;


/**

 * 可視化設置邊框顏色

 */

@property (nonatomic,strong)IBInspectable UIColor *borderColor;


/**

 * 可視化設置圓角

 */

@property (nonatomic,assign)IBInspectable CGFloat cornerRadius;



以上我們只定義三個常用屬性,其他屬性如果感興趣的話,可以自己試着添加並使用。



2).在.m文件中,我們使用set方法,將屬性的獲得的值,賦值給view的layer的相對應的屬性, 這樣就完成了對控件layer的修改。


/**

 * 設置邊框寬度

 *

 */

- (void)setBorderWidth:(CGFloat)borderWidth

{

    if(borderWidth <0) return;

    self.layer.borderWidth = borderWidth;

}


/**

 * 設置邊框顏色

 */

- (void)setBorderColor:(UIColor *)borderColor

{

    self.layer.borderColor = borderColor.CGColor;

}


/**

 *  設置圓角

 */

- (void)setCornerRadius:(CGFloat)cornerRadius

{

    self.layer.cornerRadius = cornerRadius;

    self.layer.masksToBounds = cornerRadius >0;

}


最後, 我們來看看上述代碼對xib文件或storyBoard文件所做修改的效果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章