Предложение о сетке - PullRequest
       0

Предложение о сетке

1 голос
/ 17 сентября 2010

Я пытаюсь создать вид сетки, содержащий несколько строк и столбцов видов изображений. Как и вид 4 строк и 4 столбцов с каждой ячейкой, содержащей вид изображения. Кто-нибудь может сказать, пожалуйста, лучший подход для создания такого представления? Спасибо и всего наилучшего ...

Ответы [ 2 ]

2 голосов
/ 17 сентября 2010

Я бы сделал объект GridView нисходящим из UIView. Это будет иметь свойство numberOfColumns и свойство items:

@class GridView : UIView {
    NSUInteger numberOfColumns;
    NSArray *items;
}

@property (nonatomic, assign) NSUInteger numberOfColumns;
@property (nonatomic, copy) NSArray *items;

@end

Массив items будет содержать UIViews, которые вы хотите отобразить в виде сетки.

Затем каждый раз, когда задается свойство numberOfColumns или свойство items, вы также вызываете [self setNeedsLayout]; в их установщике, т. е. для свойства items вы удалите старые, добавите новые и скажите фреймворку, что вам нужно ретранслировать

- (void)setItems:(NSArray *)value {
    if (value != items) {
        for (UIView *item in items)
            [item removeFromSuperview];
        [items release];

        items = [value copy];
        for (UIView *item in items)
            [self addsubview:item];

        [self setNeedsLayout];
    }
}

Ваш метод layoutSubviews будет перебирать массив элементов и размещать их в правильном количестве столбцов, т.е. что-то вроде

- (void)layoutSubviews {
    [super layoutSubviews];

    CGFloat width = [slef frame].size.width / numberOfColumns;
    CGFloat height = width;
    CGFloat xoffset = 0;
    CGFloat yoffset = 0;

    for (UIBView *item in items) {
        [item setFrame:CGRectMake(xoffset, yoffset, width, height)];
        xoffset += width;
        if (xoffset >= [self frame].size.width) {
            xoffset = 0;
            yoffset += height;
        }
    }
}

Я не тестировал этот код, но он должен располагать элементы в сетке, где каждый элемент квадратный.

Надеюсь, это хорошая отправная точка.

1 голос
/ 17 сентября 2010

Я сделал это с помощью UITableView.Я делаю пользовательский UITableViewCell, каждая ячейка содержит 4 кнопки для 4 столбцов и настраиваю высоту каждой ячейки для 4 строк на страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...