web-dev-qa-db-ja.com

iOSのグリッドビュー

iPad写真アプリ に表示されているのと同様のグリッドビューをiPhoneアプリで作成したいと思います。この種類の機能(SDK以外)を追加するためのライブラリまたはフレームワークはありますか?理想的には、アプリのiPadバージョンを最終的に開発したいと思います。グリッドは、縦に3アイテム、横に4アイテムですが、当面は、縦に2アイテム、横に3アイテムにします。

私がこれを行うと考えることができる唯一の方法は、UITableViewをサブクラス化し、2つまたは3つの項目を作成するカスタムセルを用意することです。しかし、これは厄介なようで、もっと良い方法があると私は確信しています。

典型的なアイテムには、写真、ラベル、ボタンがあり、複雑すぎません。

19
Jack

このために引き続きUITableViewを使用でき、それをサブクラス化する必要はありません。あなたが言ったようにあなたがしなければならないすべてはそれが複雑ではないあなた自身のカスタムセルを作成することです。面倒くさくない:)

9

IOS 6以降の場合、 ICollectionView および PSTCollectionView をお勧めします。

目標は、iOS 4/5のPSTCollectionViewをフォールバックとして使用し、iOS6のUICollectionViewに切り替えることです。特定のランタイムトリックを使用して、古いバージョンのiOSの実行時にUICollectionViewを作成します。理想的には、ファイルをリンクするだけで、すべてが古いシステムで機能します。

2010年に、私は AQGridView を推奨しました

25
catlan

これは非常に古いことは承知していますが、これに対する答えを探していて、いくつかの解決策をテストしました。 GMGridViewは、バグが少なく、バグの少ないソリューションの1つでした。 https://github.com/gmoledina/GMGridView で確認してください。

10
morcutt

テーブルビューで単純なグリッドビューを作成するには、クラス "GridViewCell"を作成し、ヘッダーファイルに次を追加します。

@interface GridViewCell : UITableViewCell

@property (nonatomic, strong)  UIButton *column1;
@property (nonatomic, strong)  UIButton *column2;
@property (nonatomic, strong)  UIButton *column3;

@end

.mファイルに次のコードを追加します。

#define CELL_WIDTH 100
#define CELL_HEIGHT 80

#import "GridViewCell.h"

@implementation GridViewCell

@synthesize column1, column2, column3;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
    column1 = [[UIButton alloc] initWithFrame:CGRectMake(5, 5, CELL_WIDTH, CELL_HEIGHT)];
    [self addSubview:column1];
    column2 = [[UIButton alloc] initWithFrame:CGRectMake(CELL_WIDTH+ 10, 5, CELL_WIDTH, CELL_HEIGHT)];
    [self addSubview:column2];
    column3 = [[UIButton alloc] initWithFrame:CGRectMake(CELL_WIDTH + CELL_WIDTH + 15, 5, CELL_WIDTH, CELL_HEIGHT)];
    [self addSubview:column3];
}
return self;
}

@end

テーブルを作成するときに、デリゲートcellForRowAtIndexPathで新しいクラス "GridView"を使用します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    GridViewCell *cell = (GridViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[GridViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    [cell.column1 setBackgroundColor:[UIColor blackColor]];
    [cell.column2 setBackgroundColor:[UIColor blackColor]];
    [cell.column3 setBackgroundColor:[UIColor blackColor]];

    return cell;
}
2
edzio27

NRGridViewが最善の方法のようです。あなたはそれを見つけることができます ここ

UITableViewと同様のメソッドがあります。セルは必要に応じてカスタマイズできます。

1
Ahsan