iOS开发UI篇—无限轮播(新闻数据展示)

一、实现效果

        

二、实现步骤

1.前期准备

  (1)导入数据转模型的第三方框架MJExtension

  (2)向项目中添加保存有“新闻”数据的plist文件

    

  (3)导入用到的图片素材

2.步骤和代码

(1)新建一个数据模型

   

  该模型的代码设计如下:    

  YYnews.h文件

 1 //
 2 //  YYnews.h
 3 //  08-无限滚动(新闻数据展示)
 4 //
 5
 6 #import <Foundation/Foundation.h>
 7
 8 @interface YYnews : NSObject
 9 @property(nonatomic,copy)NSString *title;
10 @property(nonatomic,copy)NSString *icon;
11 @end

(2)新建一个继承自UICollectionViewCell的类,用于自定义cell。

  

(3)新建一个xib文件,和自定义的cell做关联

     

  代码设计如下:

   YYcell.h文件

 1 //
 2 //  YYcell.h
 3 //  08-无限滚动(新闻数据展示)
 4 //
 5
 6 #import <UIKit/UIKit.h>
 7
 8 @class YYnews;
 9 @interface YYcell : UICollectionViewCell
10 @property(nonatomic,strong)YYnews *news;
11 @end

YYcell.m文件

 1 //
 2 //  YYcell.m
 3 //  08-无限滚动(新闻数据展示)
 4 //
 5
 6 #import "YYcell.h"
 7 #import "YYnews.h"
 8
 9 @interface YYcell ()
10 @property (weak, nonatomic) IBOutlet UILabel *label;
11 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
12
13 @end
14 @implementation YYcell
15
16 -(void)setNews:(YYnews *)news
17 {
18     _news=news;
19     self.label.text=news.title;
20     self.imageView.image=[UIImage imageNamed:news.icon];
21 }
22
23 @end

(4)在主控制器中的代码处理

  YYViewController.m文件

 1 //
 2 //  YYViewController.m
 3 //
 4 //
 5 //  Created by apple on 14-8-3.
 6 //  Copyright (c) 2014年 yangyong. All rights reserved.
 7 //
 8
 9 #import "YYViewController.h"
10 #import "MJExtension.h"
11 #import "YYnews.h"
12 #import "YYcell.h"
13
14 #define YYIDCell @"cell"
15
16 @interface YYViewController ()<UICollectionViewDataSource,UICollectionViewDelegate>
17 @property (weak, nonatomic) IBOutlet UICollectionView *collectinView;
18 @property(nonatomic,strong)NSArray *news;
19 @end
20
21 @implementation YYViewController
22
23 #pragma mark-懒加载
24 -(NSArray *)news
25 {
26     if (_news==nil) {
27         _news=[YYnews objectArrayWithFilename:@"newses.plist"];
28     }
29     return _news;
30 }
31 - (void)viewDidLoad
32 {
33     [super viewDidLoad];
34     //注册cell
35 //    [self.collectinView registerClass:[YYimageCell class] forCellWithReuseIdentifier:YYCell];
36     [self.collectinView registerNib:[UINib nibWithNibName:@"YYcell" bundle:nil] forCellWithReuseIdentifier:YYIDCell];
37
38 }
39
40 #pragma mark- UICollectionViewDataSource
41 //一共多少组,默认为1组
42 -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
43 {
44     return 1;
45 }
46 -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
47 {
48     return self.news.count;
49 }
50
51 -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
52 {
53     YYcell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:YYIDCell forIndexPath:indexPath];
54     cell.news=self.news[indexPath.item];
55     return cell;
56 }
57
58 #pragma mark-UICollectionViewDelegate
59 @end

3.补充说明

(1)如果collectionCell是以xib的方式自定义的,那么在注册cell的时候,需要使用另外一种方式。

[self.collectinView registerClass:[YYimageCell class] forCellWithReuseIdentifier:YYCell];

[self.collectinView registerNib:[UINib nibWithNibName:@"YYcell" bundle:nil] forCellWithReuseIdentifier:YYIDCell];

(2)在自定义xib的时候,使用collectionViewCell。并设置其标识为cell.

  

(3)打印查看cell的利用情况

  

时间: 2025-01-31 04:00:11

iOS开发UI篇—无限轮播(新闻数据展示)的相关文章

iOS开发UI篇—无限轮播(循环展示)

一.简单说明 之前的程序还存在一个问题,那就是不能循环展示,因为plist文件中只有五个数组,因此第一个和最后一个之后就没有了,下面介绍处理这种循环展示问题的小技巧. 方法一:使用一个for循环,循环200次,创建200*=1000个模型,且默认程序启动后处在第100组的位置,向前有500个模型,向后也有500个模型,产生一种循环展示的假象. 代码如下: 1 // 2 // YYViewController.m 3 // 07-无限滚动(循环利用) 4 // 5 // Created by ap

iOS开发UI篇—无限轮播(功能完善)

iOS开发UI篇—无限轮播(功能完善) 一.自动滚动 添加并设置一个定时器,每个2.0秒,就跳转到下一条. 获取当前正在展示的位置. 1 [self addNSTimer]; 2 } 3 4 -(void)addNSTimer 5 { 6 // NSTimer timerWithTimeInterval:<#(NSTimeInterval)#> target:<#(id)#> selector:<#(SEL)#> userInfo:<#(id)#> repe

iOS开发UI篇—无限轮播(循环利用)

一.无限轮播  1.简单说明 在开发中常需要对广告或者是一些图片进行自动的轮播,也就是所谓的无限滚动. 在开发的时候,我们通常的做法是使用一个UIScrollView,在UIScrollView上面添加多个imageView,然后设置imageView的图片,和scrollView的滚动范围. 以前的做法: 一般而言,轮播的广告或者是图片数量都不会太多(3~5张).所以,并不会太多的去考虑性能问题.但是如果图片过多(比如有16张图片,就需要创建16个imageView),那么就不得不考虑性能问题

iOS开发UI篇—无限轮播

  转载自 http://www.cnblogs.com/wendingding/p/3890953.html 一.自动滚动 添加并设置一个定时器,每个2.0秒,就跳转到下一条. 获取当前正在展示的位置. 1 [self addNSTimer]; 2 } 3 4 -(void)addNSTimer 5 { 6 // NSTimer timerWithTimeInterval:<#(NSTimeInterval)#> target:<#(id)#> selector:<#(SE

OS开发UI篇—无限轮播(功能完善)

一.自动滚动 添加并设置一个定时器,每个1.5秒,就跳转到下一条. 获取当前正在展示的位置. 1 [self addNSTimer]; 2 } 3 4 -(void)addNSTimer 5 { 6 // NSTimer timerWithTimeInterval:<#(NSTimeInterval)#> target:<#(id)#> selector:<#(SEL)#> userInfo:<#(id)#> repeats:<#(BOOL)#>

学习IOS开发UI篇--MVC设计界面及数据的模型转换

1.字典转模型 ======================================== 1.1字典转模型的好处: 1> 降低代码的耦合度 2> 所有字典转模型部分的代码统一集中在一处处理,降低代码出错的几率 3> 在程序中直接使用模型的属性操作,提高编码效率 模型应该提供一个可以传入字典参数的构造方法 - (instancetype)initWithDict:(NSDictionary *)dict; + (instancetype)xxxWithDict:(NSDiction

【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (w

iOS开发UI篇—核心动画(UIView封装动画)(转摘)

iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIViewbeginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimati

文顶顶 iOS开发UI篇—iOS开发中三种简单的动画设置

iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所