使用xib 來設定UIView 的layer 屬性

2021-07-24 13:04:52 字數 1878 閱讀 5945

ib和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巨集標記可顯示在inte***ce中並動態重新整理。

#import 

#import "uiview+ysview.h"

//在定義類的前面加上ib_designable巨集

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

*/ib_designable  //

動態重新整理

@inte***ce 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

/*** 設定邊框顏色

*/- (void)setbordercolor:(uicolor *)bordercolor

/***  設定圓角 */

- (void)setcornerradius:(cgfloat)cornerradius

最後, 我們來看看上述**對xib檔案或storyboard檔案所做修改的效果:

使用xib布局UIView

一般情況使用 自定義uiview,看不到效果且 冗長 所以可以使用xib布局view.1.新建乙個類,整合自uiview 2.新建乙個uiview的xib,名字要和第一步新建的類名字一致 填寫建立xib的名字和位址 名字和第一步新建的類一致 新建的檔案 3.在xib中關聯建立的view 在xib中選...

xib 設定陰影 iOS為UIView設定陰影效果

uiview的陰影設定主要通過uiview的layer的相關屬性來設定 陰影的顏色 im iew.layer.shadowcolor uicolor blackcolor cgcolor 陰影的透明度 im iew.layer.shadowopacity 0.8f 陰影的圓角 im iew.laye...

iOS使用xib自定義uiview

一般自定義view 方式 有 在初始化的時候新增 子views cpp view plain copy id initwithframe cgrect frame returnself 還有種 是自己畫。過載 void drawrect cgrect rect 如果 布局複雜的話 這種 方式 可以鬱...