当用户界面需要按页面显示图片时,使用OpenFlow库提供的功能,将要显示的用户界面图片分页进行显示会使编程工作变得非常快捷。该库提供了与OS X桌面Finder程序相同的视觉效果,如图3-46所示就是一个使用OpenFlow库逐页进行图片显示的程序,用户按下屏幕即可进行左右滚动显示,双击图片即可对当前显示的图片进行选取操作。
程序在视图控制器的viewDidAppear()中使用refreshCoverFlow()函数初始化OpenFlow库,通过setNumberOfImages()函数设置图片数量,代码如下。
// RootViewController.m
- (void)refreshCoverFlow{
CGRect bounds = [[UIScreen mainScreen] bounds];
AFOpenFlowView *coverFlowView = (AFOpenFlowView*)[self.view viewWithTag:kTagCoverflow];
if(coverFlowView != nil)
[coverFlowView removeFromSuperview];
coverFlowView = [[AFOpenFlowView alloc] initWithFrame:CGRectMake(0, -30, bounds.size.width, COVERFLOWHEIGHT)];
coverFlowView.dataSource = self;
coverFlowView.viewDelegate = self;
coverFlowView.defaultImage = [self defaultImage];
coverFlowView.tag = kTagCoverflow;
[self.view addSubview:coverFlowView];
NSInteger count = [self numberOfAnimals];
[coverFlowView setNumberOfImages:count];
//...
[coverFlowView release];
}
并在loadView()中初始化图片,将图片从资源中加载并保存在一个NSMutableArray类型的变量imageArray中,代码如下。
- (BOOL)doAddAnimal:(NSString *)name Image:(NSString *)imageName{
UIImage *image = [UIImage imageNamed: imageName];
if(image == nil) return FALSE;
CGSize size = CGSizeMake(179, 208);
[imageArray addObject:[self resizeImage:image scaledToSize:size]];
return TRUE;
}
在OpenFlow库的requestImageForIndex delegate方法中直接通过NSMutableArray的索引作为OpenFlow库的图片索引,并通过该索引设置和获取具体图片,代码如下。
// PageViewController.m
- (void)openFlowView:(AFOpenFlowView *)openFlowView requestImageForIndex: (int)index{
UIImage *image = [imageArray objectAtIndex:index];
[openFlowView setImage:image forIndex:index];
}
笔者在OpenFlow库AFOpenFlowView.m文件的touchesEnded()函数中增加了双击回调接口,以便在用户双击图片时通知库的调用者,代码如下。
//AFOpenFlowView.m
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if(((UITouch *)[touches anyObject]).tapCount == 2){
if ([self.viewDelegate respondsToSelector:@selector(openFlowView: coverViewDoubleClick:)])
[self.viewDelegate openFlowView:self coverViewDoubleClick: selectedCoverView.number];
}
[super touchesEnded:touches withEvent:event];
}
库的调用者RootViewController类通过接口函数coverViewDoubleClick()即可处理用户双击事件,代码如下。
- (void)openFlowView:(AFOpenFlowView *)openFlowView coverViewDoubleClick:(int)index{
NSLog(@"coverViewDoubleClick called!");
[self showPaintingViewController];
}
本节相关的完整Xcode工程源代码文件请参考本书附带的光盘中的OpenFlow工程。
本文节选自《iOS软件开发揭密:iPhone&iPad企业应用和游戏开发》一书。
《iOS软件开发揭密:iPhone&iPad企业应用和游戏开发》一书已由电子工业出版社正式出版,本书由虞斌著
购买地址:
互动出版网:http://product.china-pub.com/198191
分享到:
相关推荐
用于sdn的开发,将openflow协议中的1.3版本进行了细致翻译。
OpenFlow技术基础.docx
openflow for iphone,free code
openflow
主要包括openflow的形成以及与之相关的基础知识.
Title: OpenFlow Cookbook Author: Kingston Smiler. S Length: 300 pages Edition: 1 Language: English Publisher: Packt Publishing Publication Date: 2015-03-27 ISBN-10: 1783987944 ISBN-13: 9781783987948 ...
openflow specification 最新版
openflow switch 白皮书 openflow switch 白皮书 openflow switch 白皮书
SDN基础篇-OpenFlow实验手册
OpenFlow1.3流表项各字段详细信息,助于理解SDN网络中的OpenFlow流表结构
OpenFlow的代码事例,含有OpenFlow的库
OPENFLOW技术研究报告
学习整理的OpenFlow相关基础知识,用于入门了解Openflow的前世今生,以及各种技术的发展优缺点
Openflow交换机初步安装测试
这是一份openflow协议的文档,包括这个版本,openflow-spec-v0.8.9 openflow-spec-v1.1 openflow-spec-v1.2 openflow-spec-v1.3 另外还有一个中文版的
software defined network openflow协议英文版1.2版本
研究Openflow的入门指导大全,可以深入理解Openflow的设备架构和工作原理。
openflow和SDN深入介绍及openflow代码分析、环境搭建
openflow协议中文版本,入门SDN必备资料,中文版便于阅读,快速上手,理解其中重要概念。openflow协议中文版本,入门SDN必备资料,中文版便于阅读,快速上手,理解其中重要概念。