7

我正在尝试创建一个非常长的分段控制器,让用户在许多选项之间进行选择。我怎样才能把它放在滚动视图中?

我试过拖放它,但它不允许我滚动它。

4

6 回答 6

5

尝试通过以下代码在滚动视图中添加分段控件:

- (void)viewDidLoad
{
    [super viewDidLoad];

    journals = [[NSMutableArray alloc]init];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 49, 320, 29)];
    self.segmentedControl.frame = CGRectMake(0, 0, 640, 29);

    scrollView.contentSize = CGSizeMake(self.segmentedControl.frame.size.width, self.segmentedControl.frame.size.height -1);
    scrollView.showsHorizontalScrollIndicator = NO;

    self.segmentedControl.selectedSegmentIndex = 0;

    [scrollView addSubview:self.segmentedControl];
    [self.view addSubview:scrollView];

    [self fillJournals];

    // Do any additional setup after loading the view, typically from a nib.
}

这是一篇关于如何在滚动视图中创建分段控件的帖子

http://penningthoughtsandmemoirs.com/2013/12/16/sliding-segmented-control/

下载源代码:

https://github.com/sahilriaz1110/SlidingSegmentedControl

于 2013-12-16T09:23:19.163 回答
1

而不是建议如何将分段控件放在滚动视图中(请参阅列出的其他答案),我将提出一种完全不同的方法:更改 UI 元素。

如果您在桌面应用程序上有几个(两到三个)互斥选项,则可以使用单选按钮,这很有意义;但是如果你有十个及以上的选项,将这些单选按钮放在滚动视图中并不是最好的选择。更好/更清洁的用户界面将使用下拉菜单。

那是针对桌面应用程序的……但是移动操作系统的 UI 原则是相同的。段控件应该有几个选项(可能是五个顶部)。除此之外,您应该使用不同的 UI 元素。

想象一下,如果 iPhone 在选择一种语言时,会在分段控件中提供每种语言。不!相反,在选择语言时,您会看到一个可供选择的列表。

于 2013-07-10T18:47:47.830 回答
1

您必须设置 的内容大小UIScrollView,否则它不会滚动。

myScrollView.contentSize = mySegmentedControl.frame.size;
于 2013-07-10T17:59:43.707 回答
0

Are you using autolayout? If so then you will need to set the scrollView's content size from within viewDidLayoutSubviews. Like:

- (void) viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    [scrollView setContentSize:[segControl frame].size];
}

If you aren't using autolayout then you can just do it in -(void)viewDidLoad like:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [scrollView setContentSize:[segControl frame].size];
}

EDIT You may also want to make the scrollview contentSize slightly smaller than your segmented control so there is no give in the vertical direction:

[scrollView setContentSize:CGSizeMake([segControl frame].size.width, [segControl frame].size.height-1)];
于 2013-07-10T18:11:42.217 回答
0

如果UISegmentedControl宽度是640,请使用:

[yourScrollView setContentSize:CGSizeMake([segControl frame].size.width, 0)];

使用这条线将使其水平滚动以选择更多选项UISegmentedControl

于 2015-11-07T07:42:14.827 回答
-1

在 UIBuilder 中,您可以添加进入 ViewController 的 ScrollView,并用比屏幕大的分段控件填充它。

分段控制故事板 分段控件 UI 属性

于 2017-05-31T11:14:16.423 回答