仿于网易新闻客户端首页新闻轮播的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)));
        }
    }
}

三、实现效果

(可左右循环滚动)

 

时间: 2024-07-31 09:53:13

仿于网易新闻客户端首页新闻轮播的IOS组件的相关文章

js制作网站首页图片轮播特效代码_javascript技巧

本文实例为大家分享了使用js制作一般网站首页图片轮播效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片轮播</title> <style> .warp{ width: 600px; height: 750px; position: relative;

Android仿京东淘宝自动无限循环轮播控件思路详解

在App的开发中,很多的时候都需要实现类似京东淘宝一样的自动无限轮播的广告栏,所以就自己写了一个,下面是我自定义控件的思路和过程. 一.自定义控件属性 新建自定义控件SliderLayout继承于RelativeLayout,首先要考虑的就是自定义的控件需要扩展那些属性,把这些属性列出来.在这里是要实现类似于京东淘宝的无限轮播广告栏,那么首先想到的就是轮播的时长.轮播指示器的样式等等.我在这里列举了一些并且结合到了代码中. 1.扩展属性 (1)是否开启自动轮播的功能. (2)指示器的图形样式,一

《React Native移动开发实战》一一3.3 完善轮播广告——Image组件

3.3 完善轮播广告--Image组件 之前的轮播广告页面显示的是简单的文字和背景色,接下来添加一些好看的图片作为轮播广告. React Native中用于图片显示的组件是Image.Image组件可以显示多种不同类型图片,包括网络图片.静态资源.临时的本地图片,以及本地磁盘上的图片(如相册)等.3.3.1 使用网络图片 这里先使用网络图片来看看Image的用法和效果.修改app.js代码如下: 01 export default class app extends Component { 02

Android实现网易新闻客户端首页效果_Android

关于实现网易新闻客户端的界面,以前写过很多博客,请参考: Android实现网易新闻客户端效果 Android实现网易新闻客户端侧滑菜单(一) Android实现网易新闻客户端侧滑菜单(二) 今天用ViewPager + FragmentAdapter + ViewPagerIndicator来实现. ViewPagerIndicator是一款分页指标小部件兼容ViewPager,封装上做得非常不错,目前已为众多知名应用所使用.具体API的使用,大家可以下载官方demo示例研究研究就知道啦! 下

Android实现网易新闻客户端首页效果

关于实现网易新闻客户端的界面,以前写过很多博客,请参考: Android实现网易新闻客户端效果 Android实现网易新闻客户端侧滑菜单(一) Android实现网易新闻客户端侧滑菜单(二) 今天用ViewPager + FragmentAdapter + ViewPagerIndicator来实现. ViewPagerIndicator是一款分页指标小部件兼容ViewPager,封装上做得非常不错,目前已为众多知名应用所使用.具体API的使用,大家可以下载官方demo示例研究研究就知道啦! 下

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

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

Android客户端实现图片轮播控件_Android

本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下 1. 轮播控件的组成部分     我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成:        首先我们要有用来显示图片的View对象,根据上图中底部中央的5个点,我们知道需要5个ImageView来显示需要轮播的图片,另外还需要5个ImageView来显示5个点.现在考虑以下轮播组件应该具有的行为,首先需要每隔一定时间间隔切换到下一张图片,并且图片间切换的效果应该是平滑的,就像"翻书&qu

asp.net中上传图片并将图片在网站首页的轮播中显示,怎么实现?

问题描述 我在做一个网站带后台的,首页有图片轮播,是用JS做的,但是这些图片是固定的,现在想实现不固定图片的轮播,就是把上传的图片放到首页的图片轮播里,哪位大侠懂得帮帮忙,非常感谢! 解决方案 解决方案二:图片路径别写死,从数据库读不就好了一次性读出来,存到个数组里,然后随机索引解决方案三:那就修改那前台那些图片的路径咯.我有个馊主意,就是你把图片改成同个名字,传到现有的图片那儿.解决方案四:如果你前后台在一起,那么非常简单,就是后台上传到特定目录下,前台用js读取这个目录的图片如果你前后台不在

Android客户端实现图片轮播控件

本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下 1. 轮播控件的组成部分 我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成: 首先我们要有用来显示图片的View对象,根据上图中底部中央的5个点,我们知道需要5个ImageView来显示需要轮播的图片,另外还需要5个ImageView来显示5个点.现在考虑以下轮播组件应该具有的行为,首先需要每隔一定时间间隔切换到下一张图片,并且图片间切换的效果应该是平滑的,就像"翻书"一样.由此我们可