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