拇指指甲画廊?

问题描述:

你好奇我将如何去实现一个视图像(见下文)类似于用于iPhone照片应用程序。我最初的想法是每个单元格拥有4张图像的桌面视图,任何人都可以指向正确的方向。我在使用Apple的API时尤其感兴趣,所以在这个阶段不要太在意第三方的API /控制器。拇指指甲画廊?

alt text

我建议Three20 API。这是用于构建Facebook iPhone应用程序的API,并且具有非常大量的UI元素,包括许多照片管理UI。

的缩略图浏览器看起来像(从他们的网站):

alt text

+0

通常这会是一个很好的答案,但是当他/她特别要求不是第三方解决方案或API ... – 2010-09-01 19:48:43

+1

我读“不要太费心约在这个阶段第三方的API /控制器。”因为他不介意建议使用第三方API。但是对这个令人困惑的陈述的进一步分析表明你可能是正确的。 :P哦,可以帮助未来的其他人知道它存在。 – MarkPowell 2010-09-01 19:51:38

是的,正如你所说,一表视图会的工作,与每4件事(/行)与一个的UIButton一个自定义图像。您必须确保表格行本身不可选。 (UITableView Setting some cells as "unselectable")如果要有很多行,请确保使用表视图单元格高速缓存。

实际的表格视图单元格可能是一个UITableViewCell子类或只是正常的,有一些子视图添加到它的contentView。

+0

其实,阅读后我注意到你没有提到你想要的图像是“可打”的。如果你这样做,使用UIButtons,如果你不这样做,使用UIImage(你可以附加一个水龙头手势识别器,但这可能是矫枉过正) – 2010-09-01 19:54:13

+0

不要重新发明轮子。苹果公司提供类来做这种事情。 – NSResponder 2010-09-01 22:26:41

在iOS上,这项工作主要为您完成。检查苹果的文档MPMediaPickerController

+0

我看过文档,但似乎无法呈现自己的自定义图像(如果是,那么three20会实现它)(我不确定OP是否想要或者不使用自定义图像) – 2010-09-02 16:55:09

AQGridView是FOSS,用于许多高端应用程序,如Kobo阅读器和Netflix Actor。

你需要使用UIScrollView和一大堆UIImageViews或UIButtons(图像作为背景图像)。此代码在滚动视图上使用按钮。另外你的wud需要一个函数来生成缩略图,除非你使用资产库,在这种情况下函数已经存在。

[scrollview setContentSize:CGSizeMake(320, (items*itemWidth)]; 

    for (int i = 0; i < [items count]; i++) { 

     if (i % 4 == 0) { 

      y+=1; 
      x = 0; 
     } 


     UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [myButton setBackgroundImage:[UIImage imageWithCGImage:[items objectAtIndex:i]] forState:UIControlStateNormal]; 
     CGRect rect2 = myButton.frame; 
     rect2.size.height = kScrollObjHeight2; 
     rect2.size.width = kScrollObjWidth2; 
     rect2.origin.y = 10 + (y * 70) + (y *5); 
     rect2.origin.x = 8 + (x * kScrollObjWidth2) + (x *8); 
     myButton.frame = rect2; 
     myButton.tag = i; // tag our images for later use when we place them in serial fashion 
     x = x + 1; 


     [myButton addTarget:self action:@selector(clickFunction:) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview:myButton]; 


     [scrollview addSubview:myButton]; 

    } 

}; 


[scrollview setBackgroundColor:[UIColor blackColor]]; 
[scrollview setCanCancelContentTouches:NO]; 
scrollview.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
scrollview.clipsToBounds = YES;  // default is NO, we want to restrict drawing within our scrollview 
scrollview.scrollEnabled = YES; 

scrollview.pagingEnabled = YES;