借助于开源框架AFOpenFlow来实现CoverFlow
2011-11-08 21:34 张智清 阅读(1093) 评论(0) 编辑 收藏 举报在iPhone的SDK中有个UICoverFlowLayer类,可以用来实现CoverFlow效果。不过遗憾的是,该类属于私有API(嘿,苹果把好东西留给自己玩…...)我们无法使用该类。不过我们借助于开源框架AFOpenFlow来实现。
首先,需要在项目中添加OpenFlow开源框架([http://apparentlogic.com/openflow/]),并添加需要显示的图片。
再添加一个RootViewController作为默认页面,该类的头文件定义如下:
#import <UIKit/UIKit.h>
#import "AFOpenFlowView.h"
// 实现了AFOpenFlowViewDataSource和AFOpenFlowViewDelegate委托.
@interface ImageBrowserController : UIViewController<AFOpenFlowViewDataSource, AFOpenFlowViewDelegate> {
// 用来存储图片对象.
NSArray *coverImageData;
}
// 设置默认显示的图片.
- (void) imageDidLoad:(NSArray *)arguments;
@end
在RootViewController.m中,首先重载viewDidLoad方法,用于加载图并生成CoverFlow视图。
- (void)viewDidLoad{
// Use sample images, but load them all at once.
// Load Images.
coverImageData = [NSArray arrayWithObjects:[UIImage imageNamed:@"2569531.jpg"],
[UIImage imageNamed:@"2569547.jpg"],
[UIImage imageNamed:@"2569554.jpg"],
[UIImage imageNamed:@"V1440x900.jpg"],
[UIImage imageNamed:@"2569555.jpg"],
[UIImage imageNamed:@"2569562.jpg"],
[UIImage imageNamed:@"2569565.jpg"],
nil];
// Set the Images in OpenFlow View and set the count of images.
for (int i=0; i < [array count]; i++) {
[(AFOpenFlowView *)self.view setImage:[array objectAtIndex:i] forIndex:i];
}
[(AFOpenFlowView *)self.view setNumberOfImages:[array count]];
}
现在我们需要设置程序启动时默认显示的图片:
- (void) imageDidLoad:(NSArray *)arguments{
UIImage *loadedImage = (UIImage *) [arguments objectAtIndex:0];
NSNumber *imageIndex = (NSNumber *) [arguments objectAtIndex:1];
[(AFOpenFlowView *)self.view setImage:loadedImage forIndex:[imageIndex intValue]];
}
当然,怎么说我们这个仍是山寨CoverFlow效果,跟系统的CoverFlow还是有所区别,大家留意观察吧。