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

7
我希望制作一个具有水平滚动的菜单。
该菜单包含16个分类。因此,我计划在第一部分中放置8个,并在另一部分中放置剩余的8个。
有人可以给我提供关于需要做什么的见解吗?
我认为我需要使用以下内容。
UIScrollView
Add buttons in this scrollview

只有这些内容吗?


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

菜单示例可以在http://www.shoutem.com/上看到。

2个回答

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个按钮。


通过更多的尝试,我成功得到了我想要的结果。感谢您的帮助。 - Fahim Parkar
嗨Eric,我正在做同样的事情,水平滚动正常工作,但按钮没有显示出来..! - mavericks
Eric,这是一个非常有帮助的例子。我有一个问题。也许您可以解释一下为什么当我将滚动条拖到框架底部时,滚动变得更加困难?http://stackoverflow.com/q/43527248/2348597 - Greg

1
您可以使用UIScrollView和UIButton对象来实现您的目标,这将涉及根据您的iOS版本设置每个按钮的框架/布局属性(如Eric的答案中所述)。
但是,如果您的目标是iOS 6及以上版本,则可以使用UICollectionView,其中您的项目/单元格是按钮,然后您可以免费获得水平滚动的“菜单栏”。有很多SO帖子介绍了这一点,但主要思想是使用流式布局,其中项目大小具有高度,以便只有一个项目行(只需使项目高度与集合视图的高度相同)。
编辑:
我应该说,这可能看起来有些过度(也许是这样),但是在未来要求发生变化时,您将获得更灵活的组件。它也不会产生太多额外的代码,并且抽象出繁琐的布局细节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接