画像の幅と高さが異なる iPad アプリ用のフォト ギャラリーを作成しようとしています。グリッド ビューに収まるようにトリミングするのではなく、 PinterestやJetsetterアプリで見られるような「モザイク」効果を作成したいと思います (参考画像のリンクを参照してください)。
このような効果の作成を開始できるアイデアはありますか?
画像の幅と高さが異なる iPad アプリ用のフォト ギャラリーを作成しようとしています。グリッド ビューに収まるようにトリミングするのではなく、 PinterestやJetsetterアプリで見られるような「モザイク」効果を作成したいと思います (参考画像のリンクを参照してください)。
このような効果の作成を開始できるアイデアはありますか?
ピンタレストの可変高さの場合、 sUITableView
を使用して画像を挿入/削除するメカニズムが既に提供されているため、各列にを使用するのが最も簡単な方法UITableViewRowAnimation
です。UITableView
セルをロードする前に画像の高さを要求するため、画像の高さがわかっていると簡単です。しかし、そうでない場合、できることは、各セルを順番に (先頭または末尾に)最短のUITableView に挿入することです。画像を読み込み、必要に応じてサイズを変更します。高さをディスクにキャッシュして、すべてのセルの画像を読み込む必要がないようにします。この方法でうまく実装できました。
補遺: 3 つ (またはそれ以上) の UITableViews を使用する際のトリックの一部は、スクロールを手動で同期することです。それ以外の場合は、自動的にスクロールします。
#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];
}
}