7

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

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

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

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

UIScrollView
Add buttons in this scrollview

而已?


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

菜单示例可在http://www.shoutem.com/上查看

4

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

于 2013-08-05T23:09:02.180 回答
1

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

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

编辑:

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

于 2013-08-05T23:10:51.617 回答