19

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

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

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

4

6 に答える 6

25

iOS 6 以降では、 UICollectionViewPSTCollectionViewをお勧めします。

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

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

于 2010-09-18T19:01:04.797 に答える
10

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

于 2011-12-28T00:30:42.520 に答える
9

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

于 2010-02-15T11:30:09.823 に答える
2

テーブル ビューで単純なグリッド ビューを作成するには、クラス "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;
}
于 2012-09-27T14:03:22.553 に答える
1

NRGridView が最善の方法のようです。ここで見つけることができます。

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

于 2012-05-03T21:41:22.637 に答える
-1

カスタム UITableViewCells を使用することをお勧めします。iOS 5 では、それらをサブクラス化する必要はありません。プロジェクトに tableView を追加し、Xcode を使用してプロトタイプ セル (= カスタム セル) を tableView に追加し、それらに一意の識別子を与え、この識別子を cellForRowAtIndexPath で使用して、カスタム セルをデキューしてインスタンス化するだけです。次に、セルを設定して返します。

于 2012-02-19T20:34:11.440 に答える