Я хотел бы создать вид сетки в своем приложении для iPhone, аналогичный показанному в приложении для фотографий iPad. Есть ли библиотека или фреймворк для добавления таких функций (не SDK)? В идеале я хотел бы в конечном итоге разработать версию приложения для iPad, в которой сетка будет состоять из 3 элементов в портретной и 4 в альбомной ориентации, однако в настоящее время мне бы хотелось 2 элемента в портретной и 3 в альбомной.
Единственный способ сделать это - создать подкласс UITableView и создать собственную ячейку, которая создает 2 или 3 элемента. Это, однако, кажется грязным, и я уверен, что есть лучший способ.
Типичный предмет будет иметь изображение, ярлык и кнопку - ничего сложного.
Ответ 1
Вы можете использовать UITableView для этого, и вам не нужно будет подклассифицировать его. Как вы сказали, все, что вам нужно сделать, это создать свою собственную пользовательскую ячейку, которая не сложна. Не запутано вообще:)
Ответ 2
Для iOS 6 и выше я рекомендую UICollectionView и PSTCollectionView.
Цель состоит в том, чтобы использовать PSTCollectionView на iOS 4/5 в качестве резервной и переключитесь на UICollectionView на iOS6. Мы даже используем определенные трюки во время выполнения для создания UICollectionView во время выполнения для более старых версий iOS. В идеале вы просто связываете файлы, и все работает на системы.
В 2010 году я рекомендовал AQGridView
Ответ 3
Я знаю, что это очень старый, но я искал ответ на этот вопрос и протестировал несколько решений. Я обнаружил, что GMGridView был одним из лучших, наименее ошибочных решений. Проверьте это на https://github.com/gmoledina/GMGridView.
Ответ 4
Чтобы сделать простой вид сетки в представлении таблицы, создайте класс "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
и при создании таблицы используйте новый класс "GridView" в делетете cellForRowAtIndexPath:
- (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;
}
Ответ 5
NRGridView, кажется, лучший способ. Вы можете найти здесь здесь.
Он имеет аналогичные методы, такие как UITableView. Ячейки могут быть настроены по мере необходимости.
Ответ 6
Я бы рекомендовал использовать пользовательские UITableViewCells. В iOS 5 вам не нужно подклассифицировать их.
Просто добавьте tableView в свой проект, добавьте прототип ячеек (= пользовательская ячейка) с помощью Xcode в tableView, дайте им уникальный идентификатор и используйте этот идентификатор в cellForRowAtIndexPath, чтобы удалить и создать экземпляр вашей пользовательской ячейки. Затем установите ячейку и верните ее.