Objective c 如何创建不同宽度和高度的平铺照片库?

Objective c 如何创建不同宽度和高度的平铺照片库?,objective-c,ios,ipad,user-interface,ios5,Objective C,Ios,Ipad,User Interface,Ios5,我一直在寻找为iPad应用程序创建一个照片库,其中的图像具有不同的宽度和高度。与其裁剪它们以适应网格视图,我想创建一个“马赛克”效果,如和应用程序中所示(参考图片请参见链接) 知道从哪里开始创建这样的效果吗?对于可变高度的la Pinterest,最简单的方法是为每一列使用UITableView,因为它已经提供了使用UITableViewRowAnimation插入/删除图像的机制。如果图像的高度已知,则更容易操作,因为UITableView会在加载单元格之前请求图像。但如果不是,您可以按顺序将

我一直在寻找为iPad应用程序创建一个照片库,其中的图像具有不同的宽度和高度。与其裁剪它们以适应网格视图,我想创建一个“马赛克”效果,如和应用程序中所示(参考图片请参见链接)


知道从哪里开始创建这样的效果吗?

对于可变高度的la Pinterest,最简单的方法是为每一列使用
UITableView
,因为它已经提供了使用
UITableViewRowAnimation
插入/删除图像的机制。如果图像的高度已知,则更容易操作,因为
UITableView
会在加载单元格之前请求图像。但如果不是,您可以按顺序将每个单元格(头或尾)插入到最短的UITableView。加载图像,必要时调整大小。磁盘缓存高度,这样就不必为每个单元格加载映像。我已经通过这种方式成功地实现了它

附录:使用3个(或更多)UITableView的部分技巧是手动同步滚动。否则它们会自动滚动:

#pragma mark - UIScrollView stuff
- (void)scrollViewDidScroll:(UIScrollView *)inScrollView {
    // Sync the scrolling of all table views
    CGPoint offset = inScrollView.contentOffset;

    for (NSInteger i = 0; i < self.tableViews.count; i++) {
        PLAlbumTableView *tableView = [self.tableViews objectAtIndex:i];
        if (tableView != inScrollView)
            tableView.contentOffset = offset;

    }
}

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)inScrollView {
    // Sync the scrolling of all table views
    for (NSInteger i = 0; i < self.tableViews.count; i++) {
        PLAlbumTableView *tableView = [self.tableViews objectAtIndex:i];
        if (tableView != inScrollView)
            [tableView setContentOffset:tableView.contentOffset animated:NO];
    }
}
#pragma标记-UIScrollView内容
-(无效)scrollViewDidScroll:(UIScrollView*)inScrollView{
//同步所有表视图的滚动
CGPoint offset=inScrollView.contentOffset;
对于(NSInteger i=0;i
我还没有这样做,但我的第一印象是,pinterest更容易使用,因为图像是按列排列的,在每列中,图像都位于前一个图像的下方。但对于Jetsetter来说,如果它都是根据图像大小动态完成的,那就很棘手了。谈到Pinterest案例,你是否想象它会做一些事情,比如循环图像、放置图像、重新计算从左到右的空间、找到下一幅宽度小于等于该宽度的图像……等等?是的……有点像。基本上,我认为可以通过将图像调整为固定宽度(每列的宽度)来绘制循环图像。因此,您不需要计算左/右的空间,只需要计算顶部和底部的空间。JetSetter的情况不可能如此!可能重复的