Giter Site home page Giter Site logo

jinht / newschannel Goto Github PK

View Code? Open in Web Editor NEW
254.0 9.0 58.0 14.02 MB

新闻频道栏/滚动栏(网易新闻,新浪新闻,搜狐新闻,今日头条,聚划算,腾讯视频,优酷等类的频道栏),支持小红点标识 && 懒加载 && 缓存 && 排序 && 增删等

License: MIT License

Objective-C 98.98% Ruby 1.02%
ios-sdk channels news-reader netease scrollbar newschannel

newschannel's Introduction

NewsChannel

Ready

新闻频道栏(网易新闻,新浪新闻,搜狐新闻,今日头条,聚划算,腾讯视频,优酷等类似的频道栏)

支持小红点标识 && 懒加载 && 缓存 && 排序 && 增删等。

一言不合就上图

Function Description

  1. 单个频道小红点标识:JhtNewsChannelItemModel中isShowRedPoint为BOOL值,在生成频道栏数据Model时可以一起添加频道是否有小红点标识,在后续调接口设置小红点状态依旧照前述可以实现;
  2. 懒加载:页面不会全部加载(非scrollview),点击或者滑动到哪里加载相应页面,同时可以自己设置缓存的个数;
  3. 频道位置固定:可以设置单个或多个频道位置不可变动;
  4. 频道栏排序:可以在排序界面进行自定义排序(会有颤抖提示);
  5. 频道增删:可以在排序界面进行自定义的增删频道,同时囊括排序功能;
  6. 说明:排序或者增删之后的相应页面均可在缓存中找到!

GO

How to use

1. podfile

platform:ios, '8.0'

target '*****' do

pod 'JhtNewsChannel'
        
end

2. 个性化设置

 a. JhtNewsChannelItemModel:顶部频道Model,你可以继承这个model,来扩展满足自己需求的model;
 b. JhtChannelBarAndSlideViewConnectParamModel:用于切换频道栏界面中相关设置参数model,包含尾部加号按钮 && 颜色和字号 && 间距和坐标 && 缓存页数 等相关设置;
 c. JhtChannelBarAndSlideViewConnectParamModel中的属性notMoveNameArray(不能移动频道的名字数组)设置频道位置固定, toAddItemArray(用于存储JhtNewsChannelItemModel)属性用于设置待添加的频道数组;
 d. JhtNewsChannelItemEditParamModel:用于排序界面中相关设置参数model,包含文字 && 文字颜色 && 距离 && 背景颜色 类等相关设置。
 e. JhtChannelBarAndSlideViewConnectParamModel和JhtNewsChannelItemEditParamModel结构如下图

  • 注:model内部均注有required/optional区分标识
      1. required:必要参数,需要进行相关传递
      2. optional:个性化配置参数,内部均有相应默认值

3. 建立滑频道条和可滑动的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;

4. 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;

5. JhtChannelBarAndSlideViewConnect 方法

 a. 判断频道栏尾部按钮是否可以被点击

/** 判断频道栏尾部按钮是否可以被点击
 *  enable:yes可以被点击 
 */
- (void)judgeChannelBarTailBtnIsEnableClick:(BOOL)enable;

 b. 隐藏或者出现小红点

/** 隐藏或者出现小红点
 *  hidden:yes隐藏
 *  index:topBar 中频道栏的index
 */
- (void)redPonitIsHidden:(BOOL)hidden withIndex:(NSInteger)index;

6. 修改SDK切图资源

 如需替换SDK中的切图资源可以直接将JhtNewsChannelImages.bundle中的切图同名替换即可

  • 注:1. 对一些用户反馈的缓存疑惑统一解释一下,上面提到的缓存指的是,创建频道下的VC后且app未重启的情况下,进行频道编辑后,内部会优先使用之前创建的VC,假使不存在会重新创建新VC
      2. 假使你想做频道编辑后的持久化存储可以在以下方法中实现

    3. 在demo中可以查看相关的使用和配置方法
    4. 最后,感谢大家长久以来的支持!

Remind

  • ARC
  • iOS >= 7.0
  • iPhone \ iPad

Hope

  • If you find bug when used,Hope you can Issues me,Thank you or try to download the latest code of this framework to see the BUG has been fixed or not
  • If you find the function is not enough when used,Hope you can Issues me,I very much to add more useful function to this framework ,Thank you !

newschannel's People

Contributors

jinht avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

newschannel's Issues

swift怎么获取当前VC

看demo里面是用cache根据key取的VC,cache是JhtCache类型的,这个类型不能使用,在swift中,cache是Any类型的,需要做对应的转换,JhtCache不能使用就转换不出对应的类型然后就不能拿到当前的VC,这个有解决方法么?

尾部加号

设置尾部加号button不显示时,怎么让尾部显示的空白部分去掉..

删除频道后VC未能及时清理

重新添加Bug,点击加号,点击选中一个可以删除的栏目后,再点击加号,删除选中的栏目(这个时候红色显示的就是),编辑删除后,又重新添加了一个ScrollView,又回到第一个栏目了

真心是做的不错

真心是做的不错, 可是里面没有开源. 希望学习一下代码的心一下子破灭了. 可能有些**确实没有办法让我们了解

频道重复

比如总共三个频道,然后一直对频道进行排序、删除。最终就会出现显示上频道多于理应有的量 ,点击后一个导致崩溃@jinht
simulator screen shot 2017 1 17 9 23 55

排序界面

大神,能不能跳转界面到排序界面,有没有方法

加号按钮失效?

您好,我在使用的过程中发现当我第一次进入的时候加号可以点击,退出频道编辑页面滑动到别的页面之后就无法点击加号按钮了!
snip20161221_1
想问下加号的点击事件在哪里处理的 !
万分感谢!!!

如果只想某个频道可以排序,不允许删除,怎么实现?

大神,你好,如果我只想某个频道可以排序,不允许删除,怎么实现?

这里,“NO.1”“这是特殊情况”“这是五个字”,这三个频道。其中“这是特殊情况”频道既不允许删除,也不允许移动排序。而“NO.1”“这是特殊情况”需要移动排序,但不允许删除(即不显示删除突变,但是可以排序)。如何实现?另外,这个删除按钮的图标,貌似跑到边框线下面去了,有点影响视觉啊。。。

image

缓存功能

demo里面用的是for数组,在真是的应用中怎么使用啊

sliderView的背景颜色设置

发现只可以修改,频道常规颜色、选中颜色以及轨道颜色,没有找到sliderView的背景颜色设置选项

点击穿透Bug

弹出编辑时:
1、点击"添加更多栏目“下的栏目 时,栏目上移
2.此时被点击的栏目出现空的底图
3.点击这个底图,会穿透
1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.