как сделать горизонтальное меню прокрутки в iOS
Я хотел бы сделать меню, которое будет иметь горизонтальной прокрутки.
меню содержит всего 16 категорий. Поэтому я планирую взять 8 на первой части и отдохнуть 8 на другой части.
может ли кто-нибудь дать мне представление о том, что нужно сделать?
Я считаю, что мне нужно использовать ниже.
UIScrollView
Add buttons in this scrollview
что это?
то, что я хочу, находится на первом экране 8 кнопок, где первый экран будет иметь две строки с 4 кнопками, установленными на каждом ряд.
образец меню можно увидеть на http://www.shoutem.com/
2 ответов
Если все, что вы делаете, это добавление кнопок в горизонтальный вид прокрутки, вы сделаете что-то вроде следующего...
- (void)createScrollMenu
{
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
int x = 0;
for (int i = 0; i < 8; i++) {
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, 0, 100, 100)];
[button setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
[scrollView addSubview:button];
x += button.frame.size.width;
}
scrollView.contentSize = CGSizeMake(x, scrollView.frame.size.height);
scrollView.backgroundColor = [UIColor redColor];
[self.view addSubview:scrollView];
}
это создаст scrollview высотой 100, шириной с его родителем и добавит к нему 8 кнопок.
вы можете достичь своей цели, используя UIScrollView и ваши объекты UIButton, это будет включать установку свойств фрейма / макета каждой кнопки в зависимости от того, какую версию iOS вы нацеливаете. (Как в ответе Эрика).
однако, если вы нацелены на iOS 6 и выше, используя UICollectionView, где ваши элементы / ячейки являются кнопками, вы можете получить горизонтальную прокрутку "строка меню" бесплатно. На этом есть много сообщений SO, но основная идея-использовать макет потока где размер элемента имеет высоту, такую, что будет только одна строка элементов (просто сделайте высоту элемента такой же, как высота представления коллекции).
EDIT:
Я должен сказать, что это может показаться излишним (и, возможно, это так), но в конечном итоге вы получите гораздо более гибкий компонент в случае изменения требований в будущем. Это также не приводит к большому количеству дополнительного кода и абстрагирует утомительные детали макета.