前言
日常開發(fā)中 我們經(jīng)常會用到Alert或ActionSheet來與用戶進(jìn)行交互 , 然而系統(tǒng)提供的Alert其使用方法過于繁瑣 , 并且由于iOS系統(tǒng)版本的不同 其樣式的細(xì)節(jié)也各不相同 , 有時應(yīng)產(chǎn)品要求 我們必須封裝一個新的Alert或ActionSheet來滿足樣式的統(tǒng)一性 , 這無疑又增加了更多的代碼編寫 .
用最簡單的方式來解決一堆繁瑣的問題 這是我們每個Coder一生的向往 , 那么下面我為大家介紹一下我的開源庫 LEEAlert
LEEAlert
什么是LEEAlert ? 它是一個極大簡化了Alert和ActionSheet顯示的開源庫 , 采用的鏈?zhǔn)秸Z法封裝 輕松將長篇大論的代碼縮減至短短幾行 , 完美的適配iOS8以上系統(tǒng)版本 , 擁有強(qiáng)大的自定義特性 , 可以完成大部分使用者的個性自定義需求.
下面是一個基本的系統(tǒng)的Alert , 包含了標(biāo)題和內(nèi)容以及兩個按鈕 , 如果是使用UIAlertView 那么加上delegate的方法 基本上都是幾十行的代碼 才能完成一個Alert的彈出.
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"標(biāo)題" message:@"內(nèi)容" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *actionA = [UIAlertAction actionWithTitle:@"確認(rèn)" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
// 點擊事件Block
}];
UIAlertAction *actionB = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
// 點擊事件Block
}];
[alertController addAction:actionA];
[alertController addAction:actionB];
[self presentViewController:alertController animated:YES completion:nil];
下面是使用LEEAlert來實現(xiàn)一個和上面相同效果的Alert ( 其實僅一行代碼 為了提高可讀性 增加了換行 ) :
[LEEAlert alert].config
.LeeTitle(@"標(biāo)題")
.LeeContent(@"內(nèi)容")
.LeeCancelAction(@"取消", ^{
// 取消點擊事件Block
})
.LeeAction(@"確認(rèn)", ^{
// 確認(rèn)點擊事件Block
})
.LeeShow();
特性
- 鏈?zhǔn)秸Z法 結(jié)構(gòu)優(yōu)雅
- 支持alert類型與actionsheet類型
- 默認(rèn)樣式為Apple風(fēng)格 可自定義其樣式
- 支持自定義標(biāo)題與內(nèi)容 可動態(tài)調(diào)整其樣式
- 支持自定義視圖添加 同時可設(shè)置位置類型等 自定義視圖size改變時會自動適應(yīng).
- 支持輸入框添加 自動處理鍵盤相關(guān)的細(xì)節(jié)
- 支持屏幕旋轉(zhuǎn)適應(yīng) 同時可自定義橫豎屏最大寬度和高度
- 支持自定義action添加 可動態(tài)調(diào)整其樣式
- 支持內(nèi)部添加的功能項的間距范圍設(shè)置等
- 支持圓角設(shè)置 支持陰影效果設(shè)置
- 支持隊列顯示 多個同時顯示時根據(jù)先后順序排隊彈出.
- 支持兩種背景樣式 1.半透明 (支持自定義透明度比例和顏色) 2.毛玻璃 (支持效果類型)
- 打開和關(guān)閉的動畫時長均可自定義
- 更多特性未來版本中將不斷更新.
使用方法
簡單介紹一下完整的組成結(jié)構(gòu)
[LEEAlert alert].config //初始化一個LEEAlert對象開始設(shè)置
.LeeTitle(@"標(biāo)題") //添加的設(shè)置 根據(jù)你的需要隨意增減設(shè)置
.XXXXXXXXXX() //其他的設(shè)置
.LeeShow(); //最后設(shè)置后 在結(jié)尾調(diào)用 LeeShow() 來顯示Alert
ActionSheet與Alert基本一致 不過初始化時要調(diào)用actionsheet方法:
[LEEAlert actionsheet].config //調(diào)用actionshe方法
.XXXXXXXXXX() //其他的設(shè)置
.LeeShow(); //開始顯示
如果你感興趣 更多的使用方法歡迎前往GitHub查看
結(jié)語
在我的概念中 開發(fā)其中業(yè)務(wù)邏輯的代碼所占的比重是最大的 , 其余的輔助代碼則應(yīng)該盡可能的去簡化 , 因為過多的輔助代碼會干擾你理解邏輯 , 也會使你的代碼顯得繁瑣復(fù)雜 , 所以我們應(yīng)該盡可能的去簡化它們 , 對于一個簡簡單單彈出Alert功能 就需要長篇大論幾十行 , 這是我無法忍受的 ( 一名代碼潔癖綜合征晚期患者的自述 ) .