博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用iCarousel的旋转木马效果请求图片
阅读量:5744 次
发布时间:2019-06-18

本文共 2971 字,大约阅读时间需要 9 分钟。

使用iCarousel的旋转木马效果请求图片

https://github.com/nicklockwood/iCarousel

先看看效果:

源码如下:

////  RootViewController.m////  Created by YouXianMing on 14-5-16.//  Copyright (c) 2014年 Y.X. All rights reserved.//#import "RootViewController.h"#import "iCarousel.h"#import "YXJSON.h"#import "YXGCD.h"#import "SDWebImage.h"// 数据源#define SOURCE_DATA @"http://www.duitang.com/album/1733789/masn/p/0/50/"@interface RootViewController ()
@property (nonatomic, strong) iCarousel *carousel; // iCarousel@property (nonatomic, strong) NSMutableArray *dataArray; // 数据源@end@implementation RootViewController- (void)viewDidLoad{ [super viewDidLoad]; // 初始化数据源 _dataArray = [[NSMutableArray alloc] init]; // 初始化iCarousel self.carousel = [[iCarousel alloc] initWithFrame:self.view.bounds]; [self.view addSubview:_carousel]; _carousel.backgroundColor = [UIColor blackColor]; _carousel.type = iCarouselTypeWheel; // 设置代理 self.carousel.delegate = self; self.carousel.dataSource = self; // 异步加载数据 [[GCDQueue globalQueue] execute:^{ // 获取json数据 NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:SOURCE_DATA]]; // 转换为字典 NSDictionary *dataDic = [YXJSON dictionaryOrArrayWithJSONSData:data]; if (dataDic) { NSArray *dataArray = dataDic[@"data"][@"blogs"]; for (NSDictionary *dic in dataArray) { NSLog(@"%@", dic[@"isrc"]); // 存储数据 [_dataArray addObject:dic[@"isrc"]]; } } // 主线程更新 [[GCDQueue mainQueue] execute:^{ // 重新加载carousel [_carousel reloadData]; }]; }];}#pragma mark -#pragma mark iCarousel methods- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel{ // 元素个数 return [_dataArray count];}- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index // view的标志 reusingView:(UIView *)view // 重用的view{ if (view == nil) { view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300.0f, 400.0f)]; } // 强行转换指针 UIImageView *pointView = (UIImageView *)view; // 使用SDWebImage异步下载图片 [pointView setImageWithURL:[NSURL URLWithString:_dataArray[index]]]; // 图片自动适应 pointView.contentMode = UIViewContentModeScaleAspectFit; return view;}- (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value{ if (option == iCarouselOptionSpacing) { return value * 1.1f; } return value;}@end
RootViewController.m

以下几个地方使用了本人自己封装的类,不开源,看官请自行替换相关方法-_-!

核心的地方如下:

so easy :)

 

 

问:如何实现view的点击事件?

实现协议方法 - (void)carousel:(iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index; 即可

 

问:如何获取偏移量?

实现协议,然后如下使用

- (void)carouselDidScroll:(iCarousel *)carousel

{
    NSLog(@"scrollOffset %f", carousel.scrollOffset);
}

 

 

转载地址:http://wtnzx.baihongyu.com/

你可能感兴趣的文章
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>