簡單易用"裡程碑"、"時間軸"<iOS小工具>

來源:互聯網
上載者:User

標籤:9.png   img   添加   items   左右      避免   地址   uid   

 

非常感謝,協助我的朋友們,謝謝你們。上次我的好朋友指出了我編碼上(jwTextFiled工具組件)存在一些不規範問題,這次注意提高。

 呆毛地址:https://github.com/NIUXINGJIAN/MilestonesAndTimeline.git

【創做背景】組件的製作是因為用到類似的功能,UI設計的圖片不能滿足實際情境需要。這個組件可能存在一些我沒有發現的bug,如果你發現了,希望批評指正。
【首先聲明】該組件是本人原創,請珍惜勞動成果。因為創造它的靈感只有一瞬間,但是完成它卻使用了6個多小時,而自己測試最佳化基本上花了8個小時。

1、 它能夠協助你做什嗎?

a、組件基本說明:
【組件內部都有啥?說明:組件的box個數不確定,box內部的items個數不確定,item<為lab>的高度不確定,box要包裹住一個box內的所有items,最後一個box後可能有附加資料addtions,附加資料條數不確定,任何一條附加資料文字長度不確定 ===> 沒關係,組件已經統統幫你做好了】;
【如何修改它:你可以在 jw_ASV_Macro.h 檔案裡去修改與相關布局參數,進而改變組件的布局配置】
b、你只需要傳入一個包裹有若干資料模型的數組,資料模型中就是可能要顯示的欄位,這樣很好的支援了該組件自己根據一個模型去判斷要在一個Box裡載入多少條資料。而數組的個數就是Box的條數。支援附加資料,附加資料也做了自適應排版與組件自適應,附加資料可以有若干條。【注意:如果你要實現自動根據資料模型去載入box內的items,你需要參照我的demo裡的設計實現,你可能要把 jwAutoStepModel.h 與 jwAutoStepView.m 裡相關模型部分做一些調整】
c、支援使用該組件的app在及時更新(重新整理)資料的時候,組件及時更新,對記憶體做了最佳化,避免無用資料佔據記憶體,能夠根據資料模型,自己計算出在父視圖中的高度,方便更新父視圖的布局改變。
d、做一些自訂的修改,來定製它的布局,你只需要看懂一個宏檔案 jw_ASV_Macro.h 即可。下面是宏檔案,夠簡單吧

#pragma mark————————> (jwAutoStepView)方法宏定義#define K_Cap_X  25 // 帽子x#define K_Cap_Y  30 // 帽子y (預設)#define K_Cap_W  25 // 帽子寬度#define K_Cap_H  K_Cap_W // 帽子高度#define K_Cap_B_B_Scale 0.1 // 帽子與帽杆的比例#define K_LAB_LINE_DESTENCE  3 // 如果Lab大於1行的行間距#define K_MOUTH_W_MARGIN 10 // 嘴角的寬度#define K_MOUTH_H_MARGIN K_MOUTH_W_MARGIN *0.6 // 嘴角的高度#define K_P_2_X  (FIRST_P_X + K_MOUTH_W_MARGIN)// 繪製第二個點的X值#define BOX_RIGHT_MARGIN  25//邊框距離最右邊的距離#define K_Line_H ((K_Cap_W)*1.40f) // 預設的帽子下面杆子高度#define K_Cap_Box_Margin 8 // 帽子與Box間距#define JW_A_S_MAINS_WIDTH [[UIScreen mainScreen] bounds].size.width//螢幕寬// 第一個點的起始位置#define FIRST_P_X  ((K_Cap_X)+(K_Cap_W)+(K_Cap_Box_Margin))#define BOX_WIDTH  (JW_A_S_MAINS_WIDTH-K_Cap_X-K_Cap_W-K_Cap_Box_Margin-BOX_RIGHT_MARGIN) // 虛線框的寬度// box 與 lab 與 lab 間距#define K_inBOX_M_LAB_H  10.0f  // box 與 Lab 水平 左右 間距#define K_BOX_M_LAB_V  10.0f  // box 內 Lab 與 Lab 豎直 間距#define K_BOX_LR_LAB_SIZE  CGSizeMake(inK_BOX_M_LAB_H, inK_BOX_M_LAB_H)// box 與 Lab 水平 左右 間距#define K_L_H   21 // 一個Lab 的預設高度#define K_CONAIN_TOP  100  // 組件頁首距離#define K_CONAIN_BOTTOM  100  // 組件頁尾距離#define K_BOX_M_BOX_V  20 // 線框間距離 (預設)#define K_LASTBOX_M_ADDLAB_V  50 // 最後一個box 與首個附加Lab 的豎直距離#define K_ADDLAB_M_ADDLAB_V  15 // 附加Lab與附加Lab之間的豎直距離#define K_ADDLAB_M_CONTAIN_L  20 // 附加Lab與組件左邊的水平距離#define K_ADDLAB_M_CONTAIN_R  20 // 附加Lab與組件右邊的水平距離

??是我寫的簡單的幾個方法,還能寫幾個,但是我看也沒有必要了,又不是什麼牛逼的組件,??

#pragma mark———————— 重要方法/*傳入頁面資料  (data 為 內容條數不固定)<??>*/- (void)set_asv_uiData:(NSMutableArray<jwAutoStepModel*>*)data;/*傳入頁面資料 (data 為 附加內容條數不固定)<??>*/- (void)set_asv_addData:(NSMutableArray*)data;/*返回組件 高度 <??>*/- (CGFloat)get_asv_ControlHeight;/*預設設定 <??你可以省去“次要方法”配置,直接在該方法內去配置??>*/-(void)set_asv_default;#pragma mark———————— 次要方法/*進行中step的 帽子 顏色,反之顏色 <??>*/- (void)set_asv_capColor_steping:(UIColor*)c1 oppose:(UIColor*)c2 cap:(UIColor*)c3;/*進行中step的 帽杆 顏色,反之顏色 <??>*/- (void)set_asv_capBarColor_setping:(UIColor*)c1 oppose:(UIColor*)c2 cap:(UIColor*)c3;/*box 內文字的顏色 <??>*/- (void)set_asv_boxTextColor_steping:(UIColor*)c1 oppose:(UIColor*)c2;/*box 邊框的顏色 <??>*/- (void)set_asv_boxBorderColor_stepingColor:(UIColor*)c1 oppose:(UIColor*)c2;/* cap 內文字的顏色 <??>*/- (void)set_asv_capTextColor_steping:(UIColor*)c1 oppose:(UIColor*)c2;/*帽子文字(預設為 [1期...]有缺失校正)<??> */- (void)set_asv_CapTitles:(NSArray*)tAry;/*帽子距離最左邊距離(def=25) <??>*/- (void)set_asv_CapLeft:(CGFloat)l_m;/*帽子的直徑(def=25) <??>*/- (void)set_asv_CapDiameter:(CGFloat)d;/*帽杆與帽子的比例(0.01f ~ 1.0f ; def=0.1)<??> */- (void)set_asv_CapRodScale:(CGFloat)crScale;/*box距離頁面最右邊的距離(def = 25)<??>*/- (void)set_asv_BoxRight:(CGFloat)r_m;/* box 與 Lab 水平左右 間距(def = CGSize(10,10))<??>*/- (void)set_asv_BoxMarginLab_L_R:(CGSize)bllrSize;#pragma mark-———————— <??>如要實現,必須在 添加資料之前調用,不然不能實現<??>/* box 內 Lab 與 Lab 豎直 間距(def = 10)<??>*//* ?? box 內 首個 Lab 與 box 頂部間距由 宏定義,這裡不再提供方法修改*/- (void)set_asv_inBox_LabMarginLab_V:(CGFloat)llmv;
2、 你如何使用它?

進入參照我寫的demo,demo是基於 storyBoard 的;
demo說明:點擊頁面類比重新整理功能,及時更新群組件、資料。
demo裡進行了資料的類比,我比較鐘愛於StoryBoard 編程,開發的時候,就是一人一個storyBoard ,並沒有將所有的sb全放在一個控制台裡,純程式碼的demo、還有基於 Masory 的demo我沒有製作,見諒了。
如果你愛好純程式碼,或者Masory 可以修改一下代碼,雖然沒有試過,應該可以的吧。

下面放兩張:
資料以類比的樣子實現的:
(1)、運行demo,可能是下面的樣子:

                                                 

(2)點擊頁面(類比資料重新整理),可能是下面的樣子:

                                               

 

(3)、滾動頁面可以看到附加資料 

                                               

(4)、再次重新整理資料,附加資料,也可以隨機賦值,但是我的demo裡是寫死的,你可以試一試,??

 

                                               

3、結束語

雖然方法有點low,但是實現了基本的功能,鍛煉了思維,還能提供給有需要協助的人,覺得挺好的。
你也可以參照我的簡書說明進行使用,希望能夠幫到你。

4、資源連結

https://github.com/NIUXINGJIAN/MilestonesAndTimeline.git
如果給你帶來協助了,記得star一下哦??!

 

簡單易用"裡程碑"、"時間軸"<iOS小工具>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.