淺析iPhone SDK開發基礎之OpenFlow編程
iPhone SDK開發基礎之OpenFlow編程是本文要將誒少的內容,當用戶界面需要按頁面顯示圖片時,使用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];
小結:淺析iPhone SDK開發基礎之OpenFlow編程的內容介紹完了,希望通過本文的學習能對你有所幫助!