如何在iOS中制作水平滚动菜单

时间:2013-08-05 22:42:04

标签: ios objective-c menu horizontalscrollview

我想制作一个水平滚动的菜单。

该菜单共包含16个类别。所以我计划在第一部分拿8分,在另一部分拿8分。

有人可以让我了解需要做些什么吗?

我相信我需要在下面使用。

UIScrollView
Add buttons in this scrollview

就是这样吗?


我想要的是第一个屏幕8个按钮,其中第一个屏幕将有两行,每行设置4个按钮。

可以在http://www.shoutem.com/

看到菜单示例

2 个答案:

答案 0 :(得分:23)

如果您所做的只是向水平滚动视图添加按钮,您将执行以下操作...

- (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];
    }

这将创建一个高度为100,宽度与其父级一样大的滚动视图,并为其添加8个按钮。

答案 1 :(得分:1)

您可以使用UIScrollView和UIButton对象来实现目标,它将涉及根据您要定位的iOS版本设置每个按钮的框架/布局属性。 (如Eric的回答)。

但是,如果您的目标是iOS 6及更高版本,使用UICollectionView,其中您的项目/单元格是按钮,那么您可以免费获得水平滚动“菜单栏”。这里有很多SO帖子,但主要的想法是使用一个流程布局,其中项目大小的高度只有一行项目(只需使项目高度与集合视图的高度相同)

编辑:

我应该说,这可能看起来有点过分(也许是这样),但如果将来需求发生变化,您最终会得到更灵活的组件。它也不会产生太多额外的代码并抽象出繁琐的布局细节。