我正在构建一个iPad应用程序,并希望使用“平铺”显示器,其中的对象排列在可滚动的网格中,类似于iPhone / iPad主屏幕和iPad照片应用程序。
我想要实现的目标:
http://dl.getdropbox.com/u/413086/mzl.nbioluoe.480x480-75.jpg
SDK中是否有预先构建的方法来执行此操作?如果没有,我该如何创建自己的?
更新:我想我理解如何在网格中对“对象”进行基本排列,但我不知道如何在不使用大量内存和制作的情况下使用数千个对象和可滚动视图一切都很慢(然后再说,我还没有设备可以测试)。
半个月后,我终于找到了理想的解决方案:AQGridView
答案 0 :(得分:2)
我建议使用Three20库并调整TTLauncher视图控制器。
答案 1 :(得分:1)
我不知道有任何预先建立的方法,但通常有两种方法可以采取:
1)如果网格不会(真的)改变,你可以直接在界面构建器中创建它。
2)如果您想要更灵活的方法,可以通过计算每个元素的适当位置,以编程方式在UIViewController中构建网格。例如:
for(int i=0 ; i<num_rows ; i++) {
for(int j=0 ; j<num_cols ; j++) {
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(j*50, i*50, 40, 40)] ;
[self.view addSubview:myView] ;
[myView release] ;
}
}
答案 2 :(得分:1)
使用或派生自UIScrollView以获取包含所有切片的视图。实现委托- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
方法或覆盖- (void)setContentOffset:(CGPoint)contentOffset
方法。设置滚动视图的内容大小,就像所有切片都存在一样。
当滚动视图滚动时,找出将在屏幕上显示的图块。然后使用UITableView对单元格进行回收计划,或者根据需要添加新创建的图块,并在达到内存配额时删除距离可见区域最远的图块。您的示例显示2x3磁贴完全可见,因此您需要保留至少4x5磁贴。
如果你有两列瓷砖而没有水平滚动(图中不清楚),你可以直接使用UITableView并实现一个显示两个瓷砖的自定义UITableViewCell。
如果您是从UIScrollView派生的,那么最好的方法是将UITableView使用的接口镜像到dataSource并委托回调。你可以使用numberOfRows:,numberOfColumns:和tileForRow:column:而不是numberOfRows:,numberOfSections:和cellForIndexPath:但是主体是相同的。看起来你可以使用固定大小的瓷砖,这简化了很多事情。
答案 3 :(得分:0)
您可以使用UITableView并在它们之间使用没有行的行,并使用四种不同类型的行,每行包含两个子视图。这将为您处理所有视图缓存。然后,您可以忽略didSelect ...并简单地为您添加到单元格的contentView中的视图实现触摸。