【发布时间】:2010-09-01 19:43:15
【问题描述】:
您好,我很好奇我将如何实现一个类似于(见下文)的视图,类似于用于 iPhone 照片应用程序的视图。我最初的想法是一个表格视图,每个单元格包含 4 张图像,谁能指出我正确的方向。我对使用来自 Apple 的 API 特别感兴趣,因此现阶段并不太在意第三方 API / 控制器。
【问题讨论】:
标签: iphone objective-c cocoa-touch
您好,我很好奇我将如何实现一个类似于(见下文)的视图,类似于用于 iPhone 照片应用程序的视图。我最初的想法是一个表格视图,每个单元格包含 4 张图像,谁能指出我正确的方向。我对使用来自 Apple 的 API 特别感兴趣,因此现阶段并不太在意第三方 API / 控制器。
【问题讨论】:
标签: iphone objective-c cocoa-touch
是的,正如您所说,表格视图可以工作,4 个东西(/行)中的每一个都是带有自定义图像的 UIButton。您必须确保表格行本身不可选择。 (UITableView Setting some cells as "unselectable") 如果您有很多行,请确保使用表格视图单元格缓存。
实际的表格视图单元格可以是 UITableViewCell 子类或只是普通的子类,在其 contentView 中添加了一些子视图。
【讨论】:
我建议Three20 API。这是用于构建 Facebook iPhone 应用程序的 API,具有非常多的 UI 元素集合,包括许多照片管理 UI。
缩略图查看器看起来像(来自他们的网站):
【讨论】:
在 iOS 上,这项工作主要是为您完成的。查看 Apple 的文档以获取 MPMediaPickerController。
【讨论】:
AQGridView 是 FOSS,用于 Kobo 阅读器和 Netflix Actors 等许多知名应用程序。
【讨论】:
您需要使用 UIScrollView 和一堆 UIImageViews 或 UIButtons(以图像作为背景图像)。此代码在滚动视图上使用按钮。您还需要一个生成缩略图的函数,除非您使用资产库,在这种情况下,该函数已经存在。
[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;
【讨论】: