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 *)photoNews
            photoModelAtIndex:(NSUInteger)index;

/**
 *  图片新闻点击的回调
 *
 *  @param photoNews 控件自身
 *  @param model     点击新闻对应的model
 */
- (void)photoNews:(UIPhotoNewsView *)photoNews
    photoDidClick:(PhotoNewsModel *)model;

@end

6、循环滚动如何实现

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

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

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

  d)关键代码:

- (void)makeCycleScroll
{
    if(self.realCount >= 2)
    {
        CGFloat currentOffsetX = self.contentTableView.contentOffset.x;
        CGFloat currentOffSetY = self.contentTableView.contentOffset.y;
        CGFloat contentHeight  = self.contentTableView.contentSize.height;

        if (currentOffSetY < (contentHeight / 8.0)) {
            self.contentTableView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY + (contentHeight/2)));
        }
        if (currentOffSetY >= ((contentHeight * 6)/ 8.0)) {
            self.contentTableView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY - (contentHeight/2)));
        }
    }
}

  

三、实现效果

  (可左右循环滚动)

  

四、代码

  发邮件到:[email protected]

 

时间: 2024-08-09 15:17:53

IOS 类似于网易新闻首页新闻轮播的组件的相关文章

爱奇艺首页导航轮播特效

1 <!doctype html><!--声明当前文档为html文档--> 2 <html lang="en"><!--语言为英语--> 3 <head><!--头部--> 4 <meta charset="UTF-8"><!--字符编码:utf-8国际编码 gb2312中文编码--> 5 <meta name="Keywords" conten

js实现淘宝首页图片轮播效果

原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>淘宝首页图片轮播效果</title> <style> <!-- * {margin: 0;padding:0;} body

首页图片轮播效果

<html><head><meta  charset="utf-8" /><title>首页图片轮播效果</title><style type="text/css">* {margin: 0;padding:0;}body {background: #222;}ol{list-style: none;}img {border: 0 none;}#slider { border: 1px soli

onethink插件二(首页图片轮播)

2014年8月1日 15:34:15 基于slice-box 写了一个图片轮播的插件. 一.功能: 1.图片轮播功能 2.自定义功能(数量,效果,打开方式) 3.多重效果一键切换 4.独立性强,不影响其他代码 二.效果图: 下载地址:http://download.csdn.net/detail/douniwan123654/7704095 onethink插件二(首页图片轮播)

原生JS面向对象思想封装轮播图组件

原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能实现都分别分为不同的模块.目前我封装的这个版本还不适配移动端,只适配PC端. 主要的功能有:自动轮播,点击某一张图片对应的小圆点就跳转到指定图片,有前后切换按钮.使用的时候只需要传入图片的路径以及每张图片分别所对应的跳转路径还有目标盒子ID就可以了,还可以自定义每张图轮播的延时,不过延时参数不是必须

vue移动音乐app开发学习(三):轮播图组件的开发

本系列文章是为了记录学习中的知识点,便于后期自己观看.如果有需要的同学请登录慕课网,找到Vue 2.0 高级实战-开发移动端音乐WebApp进行观看,传送门. 完成后的页面状态以及项目结构如下: 一:创建轮播图组件slider.vue 1:在src/base下新建base文件夹,然后创建silder.vue: <template> <div class="slider" ref="slider"> <div class="sl

轮播图组件及vue-awesome-swiper的引入

?记在前面 你有多自律,就有多美好. 一.新建home.vue 1.上一篇为了方便展示,把头部my-header组件放在了App.vue,现在我们删掉App.vue里的头部组件,然后在view文件里面新建一个home.vue页面,之后把头部组件和今天要讲的轮播图组件都放在home.vue页面 2.在router->index.js中配置路由,将home.vue组件映射到根路由 / 上: OK,以上对上篇的修改完成 二.新建轮播图组件 1.我们命名为carousel,初始样子: 2.然后去home

Vue实现音乐播放器(七):轮播图组件(二)

轮播图组件 <template> <div class="slider" ref="slider"> <div class="slider-group" ref="sliderGroup"> //这里的<slot></slot>插槽表示里面的内容可以由引用这个轮播图组件的推荐组件来插入 只需要在<slider></slider>标签里面插入内容

模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)

接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着模仿京东首页呢,结果也没赶得及写完,轮播图让我搞了好长时间.也好,那就国庆8天好好的写一下,这里写了一半,先放着.先介绍一下这一半的内容.       还是老规矩,先放个图吧,虽然才一点点了 上线的banner大图和京东头条都是可以滚动的,抄写微信小程序社区官方qq群:390289365里 Nige

安卓首页图片轮播效果(淘宝、京东首页广告效果)

直奔主题: 1.主要原理就是利用定时任务器定时切换ViewPager的页面. 2.里面用了一个读取网络图片的插件.做client使用本地图片轮播的也非常少. 先上个效果图: 项目代码结构截图: 自己定义View 的布局文件layout_slideshow.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.and