swift IB中所見即所得

2021-09-10 09:26:44 字數 3340 閱讀 5589

平時開發中,經常會遇到設定控制項的圓角、邊框、陰影等簡單的顯示特效。剛開始通常我們都是會用**去設定,有時為了設定乙個按鈕的特性寫了好幾行無腦**。更關鍵的是即使擼完**了,還是不能即時看到效果,要執行模擬器,如果不滿意效果,還要一點點去修改,再去執行看效果,費時費力並且沒有任何技術含量。

正文開始

第一種方式:擴充套件 uiview

首先說一下 優點 :不用具體區分 uibutton 、 uiimage 、 uilabel 等等繼承自 uiview 的控制項,一次設定,全部生效,沒有任何多餘操作。

然後 缺點 也很明顯:相比於純**,僅僅是省略了**設定的部分,但是想要看到效果,必須要執行程式才行。

具體**,建立乙個 swift 檔案,引入標頭檔案 import uikit ,這裡我僅僅寫了設定圓角、邊框寬度和邊框顏色三個特性,其他特性類似,照貓畫虎就行了。這裡需要說明的是邊框顏色 bordercolor 是 cgcolor 型別的,但是 cgcolor 在 storyboard 是不能直接設定的,所以需要對 calayer 做擴充套件:

import uikit

extension uiview set

}// 邊線寬度

@ibinspectable var borderwidth: cgfloat set

}// 邊線顏色

@ibinspectable var bordercolor: uicolor set }}

// 設定邊線顏色

extension calayer set

}}

具體效果就是下面這個樣子:

也就是設定控制項的時候會多出來幾個設定選項,手動輸入自己期望的數值就行了,然後執行看效果。

第二種方法:使用類的繼承,單獨設定

個人認為是相比於上乙個更好的方法。優點 就是隨改隨看,簡單高效。缺點就是每乙個控制項必須要歸屬乙個自定義的類,但是相比於達到的效果,這個缺點瑕不掩瑜。

通常我們設定的也就是 uibutton 、 uiimage 、 uilabel 這三個控制項,如果有其他控制項,在複製乙份就行了。下面的**就是對這三個控制項進行了設定:

import uikit

// 自定義uibutton

@ibdesignable

class dbutton: uibutton

}// 設定邊框寬度

@ibinspectable var dborderwidth: cgfloat = 0.0

}// 設定邊框顏色

@ibinspectable var dbordercolor: uicolor = uicolor.clearcolor()

}// 設定邊框陰影

@ibinspectable var dshadowcolor: uicolor = uicolor.clearcolor()

}// 設定邊框陰影顏色

@ibinspectable var dshadowoffset: cgsize = cgsizezero

}// 設定陰影透明度,取值 0 ~ 1.0

@ibinspectable var dshadowopacity: float = 0.0

}// 設定陰影圓角

@ibinspectable var dshadowradius: cgfloat = 0.0 }}

// 自定義uilabel

@ibdesignable

class dlabel: uilabel

}// 設定邊框寬度

@ibinspectable var dborderwidth: cgfloat = 0.0

}// 設定邊框顏色

@ibinspectable var dbordercolor: uicolor = uicolor.clearcolor()

}// 設定邊框陰影

@ibinspectable var dshadowcolor: uicolor = uicolor.clearcolor()

}// 設定邊框陰影顏色

@ibinspectable var dshadowoffset: cgsize = cgsizezero

}// 設定陰影透明度,取值 0 ~ 1.0

@ibinspectable var dshadowopacity: float = 0.0

}// 設定陰影圓角

@ibinspectable var dshadowradius: cgfloat = 0.0 }}

// 自定義uiimageview

@ibdesignable

class dimageview: uiimageview

}// 設定邊框寬度

@ibinspectable var dborderwidth: cgfloat = 0.0

}// 設定邊框顏色

@ibinspectable var dbordercolor: uicolor = uicolor.clearcolor()

}// 設定邊框陰影

@ibinspectable var dshadowcolor: uicolor = uicolor.clearcolor()

}// 設定邊框陰影顏色

@ibinspectable var dshadowoffset: cgsize = cgsizezero

}// 設定陰影透明度,取值 0 ~ 1.0

@ibinspectable var dshadowopacity: float = 0.0

}// 設定陰影圓角

首先說一下上面的**,很明顯有大量重複的**,我嘗試讓它們繼承自乙個公用的基類,發現有報錯。所以,這個還待去嘗試。另外乙個問題就是每乙個名字我前面都加了乙個字母 d ,並沒有什麼特殊的含義,因為 uibutton 、 uiimageview 設定陰影的時候都是 button.layer.shadowcolor 方式的,但是 uilabel 則是 label.shadowcolor ,所以直接用和原設定引數名字相同的話, uilabel 這裡會出問題,這裡統一風格,都新增乙個標示符。下面直接看效果:

如果看不到效果,重啟 xcode 或者 command + b

所見即所得

看到的只有認真總結積累沉澱,才能做到所見即所得!一直提倡開源,閉源阻礙不了社會的進步,只會使自己退步,因為跟不上時代,不進則退。週末筆記,不嚴謹,只是對技術的執著!沒有比較很難去發現自己的問題,短時間內提供演算法到最優,需要對業務和演算法深刻的洞察,問題肯定是有解決方法的,遇到問題請問一句自己 針對...

所見即所得

收藏檢視 我的收藏 231有用 1 已投票 9 編輯鎖定 所見即所得是一種系統。它使得使用者在檢視中所看到文件與該文件的最終產品具有相同的樣式,也允許使用者在檢視中直接編輯文字 圖形 或文件中的其他元素。wysiwyg 語言常常比標籤語言容易使用,因為標籤語言並沒有對各種改變提供即時的視覺上的反饋。...

Jsoncpp 所見即所得使用範例

jsoncpp版本 jsoncpp 1.8.4 include int main for auto i root.begin i root.end i json value root std ifstream infile infile.open your.json std ios in try c...