IOS 类似于网易新闻首页新闻轮播的组件

阅读: 评论:0

IOS 类似于网易新闻首页新闻轮播的组件

IOS 类似于网易新闻首页新闻轮播的组件

一、需求分析

 1、可横向循环滚动新闻图片

 2、滚动到对应图片时显示新闻标题 

 3、每张新闻图片可点击

 4、有pageControl提示

 5、具有控件的扩展能力

二、设计实现

 1、显示图片使用SDWebImage第三方库,可缓存图片、通过url异步加载图片

 2、使用一个横向滚动的UITableView实现循环滚动

 3、使用一个黑色半透明的背景、白色文字的UILabel显示标题

 4、定义每个新闻的数据结构:

/** @brief 默认使用本地地址,如果本地没有的话,使用网络图片 */@interface PhotoNewsModel : NSObject/** @brief 加载时展示的图片*/
@property (nonatomic, strong) UIImage *loadingImage;/** @brief 图片本地的地址 */
@property (nonatomic, strong) NSString *localPath;/** @brief 新闻图片的地址 */
@property (nonatomic, strong) NSString *photoUrl;/** @brief 新闻标题 */
@property (nonatomic, strong) NSString *title;@end

5、代理协议:

@protocol UIPhotoNewsViewDelegate <NSObject>/***  取得多少条图片新闻**  @param photoNews 控件自身**  @return 图片新闻的个数*/
- (NSUInteger)photoNewsCount:(UIPhotoNewsView *)photoNews;/***  返回第几个图片新闻的model**  @param photoNews 控件自身*  @param index**  @return 返回描述图片新闻的model*/
- (PhotoNewsModel *)photoNews:(UIPhotoNewsView *)photoNewsphotoModelAtIndex:(NSUInteger)index;/***  图片新闻点击的回调**  @param photoNews 控件自身*  @param model     点击新闻对应的model*/
- (void)photoNews:(UIPhotoNewsView *)photoNewsphotoDidClick:(PhotoNewsModel *)model;@end

6、循环滚动如何实现

  a)将要展示的数据复制一份相当于 1、2、3、4|1、2、3、4

  b)数据初始化时,定位到第二份的1这里

  c)滚动到前面的1或者2时,设置跳转到第二份的1和2

  d)关键代码:

- (void)makeCycleScroll
{alCount >= 2){CGFloat currentOffsetX = tOffset.x;CGFloat currentOffSetY = tOffset.y;CGFloat contentHeight  = tSize.height;if (currentOffSetY < (contentHeight / 8.0)) {tOffset = CGPointMake(currentOffsetX,(currentOffSetY + (contentHeight/2)));}if (currentOffSetY >= ((contentHeight * 6)/ 8.0)) {tOffset = CGPointMake(currentOffsetX,(currentOffSetY - (contentHeight/2)));}}
}

三、实现效果

  (可左右循环滚动)

  

四、代码

   提取码:xvfl

本文发布于:2024-02-02 12:58:10,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170684989143954.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类似于   首页   网易新闻   组件   新闻
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23