一個優雅的占位圖解決方案。適用于 UITableView 和 UICollectionView。

FMListPlaceholder

006tNc79gy1fz8ipkdw88j30va0b4q48.jpg

platform
languages
cocoapods
support

項目地址:https://github.com/yfming93/FMListPlaceholder

一個優雅的占位圖解決方案。適用于 UITableView 和 UICollectionView。

一行代碼處理空列表占位圖邏輯

0x001 與其他的同類三方庫對比的優點:

  • 首次進入列表占位圖是不顯示的。只在網絡請求完成后,再次刷新列表時才處理相關邏輯;
  • 簡單、高效、實用,最快一行代碼就可以集成;
  • 提供更加全面豐富、高度自定義的效果;
  • 可一行代碼設置一套自己項目專屬的默認方案,然后也可以在某個特殊的列表單獨二次自定義效果;

0x002 效果演示

006tNc79gy1fz8jghf5d0g30hj0dsx6p.gif

0x003 如何使用

  • CocoaPods 使用:
    • Podfile 文件新增 pod "FMListPlaceholder"
    • 打開終端, 切換到項目文件目錄。 執行 pod install
    • 導入主頭文件:#import <FMListPlaceholder.h>
  • 手動拖入 使用:
    • 下載演示工程,把 FMListPlaceholder 文件夾拖入自己項目中;
    • 導入主頭文件:#import "FMListPlaceholder.h"
一行代碼使用
_tableView.needPlaceholderView = YES;   //the same as UICollectionView

或者如下自定義

自定義全局默認
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {[FMListPlaceholder fm_defaultBackgroundColor:UIColor.whiteColor coverName:@"xxx" tips:@"Sorroy,nil here!" tipsTextColor:UIColor.grayColor tipsFont:[UIFont systemFontOfSize:16] coverSize:CGSizeZero coverCenterYOffset:-30 coverSpaceToTips:10];return YES;
}

0x004 自定義

自定義某個特殊列表

?根據自己需求自行調用如下某些接口設置,UITableView 和 UICollectionView 接口相同。

[_tableView fm_emptyCoverName:@"fm_placeholder_nil" emptyTips:@" "];
[_tableView fm_backgroundColor:[UIColor colorWithRed:0.91 green:0.90 blue:0.90 alpha:1.00] tipsTextColor:UIColor.redColor tipsFont:nil];
[_tableView fm_coverCenterYOffset:-80 coverSize:CGSizeMake(90, 120) coverSpaceToTips:20];
// the same as UICollectionView


點擊刷新邏輯

(如果需要點擊刷新邏輯,可實現如下 block)

_tableView.reloadBlock = ^(UIScrollView *listView) {// Reload Handle is Here!// [listView.mj_header beginRefreshing]; // reloadData
};
更加詳細請見演示工程

0x005 希望

  • 如果您在使用過程中有任何疑問或想要更多界面進行自定義,您可以發給我!

  • 如果您想參與本項目的維護或具有良好的設計風格,歡迎拉動請求!
  • 如果您在使用時有任何問題,請與我聯系。
    • 博客網站: www.yfmingo.cn
    • 郵箱: yfmingo@163.com.
  • 希望能夠共同完善這個項目,讓它變得更強大,能夠滿足大多數用戶的需求!

0x006 QQ 群

006tNc79gy1fz8aavckscj30f10kl0us.jpg

0x007 要求

  • iOS 9.0 or later
  • Xcode 9.0 or later

0x008 許可證

All source code is licensed under the MIT License.

轉載于:https://www.cnblogs.com/yfming/p/10283096.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249810.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249810.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249810.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

es7 async 前置依賴

https://stackoverflow.com/questions/33527653/babel-6-regeneratorruntime-is-not-defined 移動端 px2rem-loader 轉載于:https://www.cnblogs.com/smzd/p/10560176.html

vue中 關于$emit的用法

1、父組件可以使用 props 把數據傳給子組件。 2、子組件可以使用 $emit 觸發父組件的自定義事件。 vm.$emit( event, arg ) //觸發當前實例上的事件 vm.$on( event, fn );//監聽event事件后運行 fn&#xff1b; 例如&#xff1a;子組件&#xff1a; <template><di…

SSO閱讀有感

SSO比較詳細且理解。贊 鏈接&#xff1a;https://www.cnblogs.com/ywlaker/p/6113927.html轉載于:https://www.cnblogs.com/z1j2r3/p/9408480.html

C語言——反彈球游戲(第二階段

#include<stdio.h> #include<stdlib.h> #include<windows.h> #include<conio.h>#define High 15 //游戲畫面尺寸 #define Width 20//全局變量 int ball_x,ball_y; //小球的坐標 int ball_vx,ball_vy; //小球的速度 int canvas[High][W…

docker運行我們的容器

docker images docker pull nginx 運行 docker images 查看Nginx鏡像是否獲取成功&#xff0c;若為如下所示即為獲取成功&#xff1a; docker run -p 8080:80 -d nginx docker run –name 容器名 -d&#xff08;后臺運行&#xff09;-p 本地端口:容器端口 -v(掛載) 掛載本地路徑…

vue-transition動畫

demo點擊顯示與消失 <div id"demo"><button v-on:click"show !show">Toggle</button><transition name"fade"><p v-if"show">hello</p></transition> </div> <script> new V…

luogu P1896 [SCOI2005]互不侵犯

去tm插頭dp 數據范圍這么小,又要求,顯然上dp 設\(f[i][j][k]\)表示放到第\(i\)行,總共放了\(j\)個那啥,第\(i\)行的格子狀態為\(k\)的方案 先預處理出一行內狀態的放置個數和格子狀態,因為那啥占據周圍一圈的格子,所以轉移時前后兩行格子狀態沒有交集的狀態轉移 #include<al…

Java String:重要到別人只能當老二的字符串類

字符串&#xff0c;是Java中最重要的類。這句肯定的推斷不是Java之父詹姆斯高斯林說的&#xff0c;而是沉默王二說的&#xff0c;因此你不必懷疑它的準確性。 關于字符串&#xff0c;有很多的面試題&#xff0c;但我總覺得理論知識繞來繞去沒多大意思。你比如說&#xff1a;Str…

vue 中slot 的具體用法

子組件 <template><div class"slotcontent"><ul><!--<slot></slot>--><li v-for"item in items">{{item.text}}</li></ul></div> </template><script>export default{data(){re…

Java基礎教程:多線程基礎(3)——阻塞隊列

Java基礎教程&#xff1a;多線程基礎&#xff08;3&#xff09;——阻塞隊列 快速開始 引入問題 生產者消費者問題是線程模型中的經典問題&#xff1a;生產者和消費者在同一時間段內共用同一存儲空間&#xff0c;生產者向空間里生產數據&#xff0c;而消費者取走數據。 模擬情景…

001.Linux開機啟動過程

相關Linux啟動過程解析&#xff0c;此作為通用啟動參考&#xff1a; 轉載于:https://www.cnblogs.com/itzgr/p/10285833.html

學習vim 從常用按鍵開始

撤銷 u 前進 ctrl r移動 下一個單詞 w 當前單詞首或上個單詞首 b 當前單詞尾或上個單詞尾 e ---- 大寫就是忽略標點符號 行首行尾 $^ 查詢 /word 下一個 n 上一個 Nv 可視化操作命令 刪除操作 x 刪除光標處的字符&#xff0c;向后刪除 nx …

element ui 中 el-menu 如何添加鏈接router-link標簽

在vue項目中&#xff0c;使用elementui 框架&#xff0c;做一個后臺管理系統 在寫左邊菜單&#xff0c;菜用了&#xff0c;elementui 提供的組件 &#xff0c; el-menu 組件。但是組件沒有鏈接&#xff0c;而我們知道添加鏈接使用router-link標簽代碼如下&#xff1a; <el-…

使用fastjson的parseObject方法將json字符串轉換成Map 或者List

fastjson 轉換成map HashMap<String,String> map JSON.parseObject(jsonStr,new TypeReference<HashMap<String,String>>() {}); fastjson 轉換成list List<Person> list new ArrayList<Person>(); list JSON.parseArray(jasonArray.toStri…

【01】《正則表達式必知必會》(已看)(僅存放)

【01】《正則表達式必知必會》 共149頁。掃描版&#xff0c;中文版。Sams Teach Yourselef Regular Expressions in 10 minutesBen Forta著。楊濤 翻譯【】魔芋&#xff1a;這本書已經沒有用了。內容已吸收。內容較為基礎&#xff0c;也很全面。** 附件列表 鏈接&#xff1a;ht…

vue-cli腳手架的.babelrc文件

{// 此項指明&#xff0c;轉碼的規則"presets": [// env項是借助插件babel-preset-env&#xff0c;下面這個配置說的是babel對es6,es7,es8進行轉碼&#xff0c;并且設置amd,commonjs這樣的模塊化文件&#xff0c;不進行轉碼["env", {"modules": …

Java秒殺業務架構設計之路

Java秒殺業務架構設計之路

疑難雜癥,逐個下藥

用戶登陸&#xff08;三次輸錯機會&#xff09;且每次輸錯誤時顯示剩余錯誤次數&#xff08;提示&#xff1a;使用字符串格式化&#xff09; 三次登錄: 1.讓用戶輸入三次的機會,錯一次的時候就要詢問用戶是否要繼續 2.分別判斷用戶名和密碼,如果用戶名錯誤就提示用戶錯誤,如果是…

JS性能分析(測試代碼運行時間)

console.time("timer"); for(var i0;i<10000;i){} console.timeEnd("timer"); timer: 0.274169921875ms轉載于:https://www.cnblogs.com/smzd/p/10647455.html

jsonp原生js跨域拿新浪數據插件封裝【可擴展】

//修改了一個bug,增加了手動釋放垃圾 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-…