【iOS_GitHub】新聞頻道欄(網易新聞,新浪新聞,搜狐新聞,今日頭條,聚划算,騰訊視訊,優酷等類的頻道欄),支援小紅點標識 && 懶載入 && 快取 && 排序 && 增刪等...

weixin_33890499發表於2017-05-15

NewsChannel(新聞頻道欄)

Ready

新聞頻道欄(網易新聞,新浪新聞,搜狐新聞,今日頭條,聚划算,騰訊視訊,優酷等類似的頻道欄)

支援小紅點標識 && 懶載入 && 快取 && 排序 && 增刪等。

一言不合就上效果圖


Function Description

  1. 單個頻道小紅點標識:JhtNewsChannelItemModel中isShowRedPoint為BOOL值,在生成頻道欄資料Model時可以一起新增頻道是否有小紅點標識,在後續調介面設定小紅點狀態依舊照前述可以實現;
  2. 懶載入:頁面不會全部載入(非scrollview),點選或者滑動到哪裡載入相應頁面,同時可以自己設定快取的個數;
  3. 頻道位置固定:可以設定單個或多個頻道位置不可變動;
  4. 頻道欄排序:可以在排序介面進行自定義排序(會有顫抖提示);
  5. 頻道增刪:可以在排序介面進行自定義的增刪頻道,同時囊括排序功能;
  6. 說明:排序或者增刪之後的相應頁面均可在快取中找到!

GO

How to use

1. 個性化設定

a. JhtNewsChannelItemModel:頂部頻道Model,你可以繼承這個model,來擴充套件滿足自己需求的model;

 b. JhtChannelBarAndSlideViewConnectParamModel:用於切換頻道欄介面中相關設定引數model,包含尾部加號按鈕 && 顏色和字號 && 間距和座標 && 快取頁數 等相關設定;

 c. JhtChannelBarAndSlideViewConnectParamModel中的屬性notMoveNameArray(不能移動頻道的名字陣列)設定頻道位置固定, toAddItemArray(用於儲存JhtNewsChannelItemModel)屬性用於設定待新增的頻道陣列;

 d. JhtNewsChannelItemEditParamModel:用於排序介面中相關設定引數model,包含文字 && 文字顏色 && 距離 && 背景顏色 類等相關設定。

  • 注:JhtChannelBarAndSlideViewConnectParamModel和JhtNewsChannelItemEditParamModel結構如下圖



2. 建立滑頻道條和可滑動的view:相關個性化設定均由傳遞的Model中引數實現

/** 建立ChannelBarAndSliderView和排序刪除介面
 *  barAndSlideModel:用於設定sliderView和bar引數model(為了容錯,含有部分屬性預設值)
 *  itemEditModel:用於排序介面的引數設定(為了容錯,含有部分屬性預設值)
 *  channelArray:已經新增的頻道陣列 儲存JhtNewsChannelItemModel (必要引數,並且是儲存JhtNewsChannelItemModel的陣列)
 *  baseViewController:所處於的VC
 *  sortFView:排序介面放入的父view
 *  titleArray:所有的名字陣列
 *  delegate:代理
 */
- (id)initSlideViewAndItemEditViewWithBarAndSlideModel:(JhtChannelBarAndSlideViewConnectParamModel *)barAndSlideModel withNewsChannelItemEditModel:(JhtNewsChannelItemEditParamModel *)itemEditModel withChanelArray:(NSMutableArray *)channelArray withBaseViewController:(id)baseViewController withSortFView:(UIView *)sortFView withTitleArray:(NSArray *)titleArray withDelegte:(id<JhtTotalSlideViewDelegate>)delegate;

3. JhtTotalSlideViewDelegate 方法

@protocol JhtTotalSlideViewDelegate <NSObject>
/** VC總數量 */
- (NSInteger)numberOfTabsInJhtTotalSlideView:(JhtTotalSlideView *)sender;
/** 當前index下的VC */
- (UIViewController *)JhtTotalSlideView:(JhtTotalSlideView *)sender controllerAt:(NSInteger)index;

/** 點選VC的index */
- (void)JhtTotalSlideView:(JhtTotalSlideView *)sender didSelectedAt:(NSInteger)index;

/** 排序之後的操作
 *  modelArr:model陣列
 *  nameArray:名字陣列
 *  selectedIndex:選中的index
 */
- (void)JhtTotalSlideViewWithSortModelArr:(NSArray *)modelArr withNameArray:(NSArray *)nameArray withSelectIndex:(NSInteger)selectedIndex;

4. JhtChannelBarAndSlideViewConnect 方法

a. 判斷頻道欄尾部按鈕是否可以被點選

/** 判斷頻道欄尾部按鈕是否可以被點選
 *  enable:yes可以被點選 
 */
- (void)judgeChannelBarTailBtnIsEnableClick:(BOOL)enable;

b. 隱藏或者出現小紅點

/** 隱藏或者出現小紅點
 *  hidden:yes隱藏
 *  index:topBar 中頻道欄的index
 */
- (void)redPonitIsHidden:(BOOL)hidden withIndex:(NSInteger)index;

5.修改SDK切圖資源

如需替換SDK中的切圖資源可以直接將JhtNewsChannelImages.bundle中的切圖同名替換即可

  • 注:1. 對一些使用者反饋的快取疑惑統一解釋一下,上面提到的快取指的是,建立頻道下的VC後且app未重啟的情況下,進行頻道編輯後,內部會優先使用之前建立的VC,假使不存在會重新建立新VC

      2. 假使你想做頻道編輯後的持久化儲存可以在以下方法中實現

      3. 最後,感謝大家長久以來的支援!


GitHub主頁

CSDN Blog

Email:jinjob@icloud.com

相關文章