前言
由于公司項(xiàng)目做的新聞資訊,必然少不了對于無新聞內(nèi)容
的展示和對于無網(wǎng)絡(luò)
時(shí)的展示
舉個(gè)例子:當(dāng)加載新聞詳情頁時(shí)處于一個(gè)無網(wǎng)絡(luò)狀態(tài)時(shí),我們就需要對其進(jìn)行展示無網(wǎng)絡(luò)圖片,好了葡兑,需求明白了
來張gif
圖瞬間明了
不墨跡,直接貼github
猩谊,希望各路大神來噴
開啟傳送門:
先來張demo
展示圖
思路
首先肯定應(yīng)該能做到全局對于ViewController
進(jìn)行無網(wǎng)絡(luò)/無內(nèi)容展示,那么索性直接對UIViewController
添加方法 (類別)
其次若展示無內(nèi)容時(shí)祭刚,應(yīng)需要針對數(shù)據(jù)源
進(jìn)行判斷展示牌捷,例如當(dāng)數(shù)據(jù)源
為空時(shí),即展示無內(nèi)容
涡驮,那么方法參數(shù)里起碼應(yīng)該包含數(shù)據(jù)源個(gè)數(shù)信息
其次就是因人而異宜鸯,任人發(fā)揮的自定義樣式
問題了,這個(gè)不做過多解釋
注意大神可以移步了遮怜,以下是很基礎(chǔ)的解釋說明淋袖,耐心的就多看一會(huì)吧,支持一下
類建的雖然多锯梁,但我覺得不能少即碗,為了以后好維護(hù),可以多增加一些功能陌凳,整體框架不能變剥懒,隊(duì)形不能散
UIViewController+WyhShowEmpty
為主體文件,處理布局和邏輯判斷合敦,說到布局初橘,就需要運(yùn)用一點(diǎn)最基礎(chǔ)的<objc-runtime>
機(jī)制在類別中添加屬性
Style文件
是單獨(dú)抽出來的類, 用于處理所有子控件的樣式,這也是最合理的部分保檐,這樣就實(shí)現(xiàn)了對于樣式的抽離耕蝉,在主體文件是根據(jù)樣式進(jìn)行分配init
的
其他類不做過多解釋了,代碼大家下載去看吧
應(yīng)用中實(shí)際調(diào)用代碼示例:
-(void)loadNetWork{
[[AFHTTPSessionManager manager] POST:url parameters:body progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([responseObject[@"code"] isEqualToNumber:@0]) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
//成功回調(diào)里添加
[self wyh_showEmptyMsg:@"很抱歉暫無更新" dataCount:self.dataSource];
});
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//失敗回調(diào)里添加
[self wyh_showEmptyMsg:@"網(wǎng)絡(luò)不給力夜只,點(diǎn)擊刷新" dataCount:0 isHasBtn:YES Handler:^{
[self loadNetWork];
}];
}];
}
修復(fù)內(nèi)容如下
增加對于UIView的類別垒在,并使其成為底層實(shí)現(xiàn),ViewController是針對UIView的封裝
修復(fù)了在移除empty后依然有點(diǎn)擊事件的bug
修復(fù)了在不同尺寸的View上還依然展示屏幕大小的empty的bug
喜歡的github
幫點(diǎn)個(gè)star
扔亥,支持一下场躯,謝謝各位