美文网首页
iOS-SegmentedControl-分类控制器

iOS-SegmentedControl-分类控制器

作者: Freedom_fly | 来源:发表于2018-03-12 16:45 被阅读13次

应用开发过程会有如下需求:
在当前页面,展示不同的Controller,添加button或其他的控件来控制在不同Controller之间切换


image.png

简易代码实现:

@implementation ViewController
{
    FirstViewController *_first;
    SecondViewController *_second;
    UIScrollView *_scrollView;
    UISegmentedControl *_segmentedControl;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // segment
    _segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"FirstViewController", @"SecondViewController"]];
    [_segmentedControl setFrame:CGRectMake(20, 35, self.view.frame.size.width-40, 35)];
    [self.view addSubview:_segmentedControl];
    _segmentedControl.selectedSegmentIndex = 0;
    [_segmentedControl addTarget:self action:@selector(SegmentedControlAction:) forControlEvents:UIControlEventValueChanged];
    // 分类控制器
    _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, self.view.frame.size.height-100)];
    _scrollView.delegate = self;
    [self.view addSubview:_scrollView];
    _scrollView.pagingEnabled = YES;
    _scrollView.backgroundColor = [UIColor whiteColor];
    _scrollView.showsVerticalScrollIndicator = NO;
    _scrollView.showsHorizontalScrollIndicator = NO;
    _scrollView.contentSize = CGSizeMake(self.view.frame.size.width*2, self.view.frame.size.height-100);

    _first = [[FirstViewController alloc] init];
    _first.delegate = self;
    _first.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 100);

    _second = [[SecondViewController alloc] init];
    _second.view.frame = CGRectMake(self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height - 100);


    [_scrollView addSubview:_first.view];
    [self addChildViewController:_first];
    [_first didMoveToParentViewController:self];

    [_scrollView addSubview:_second.view];
    [self addChildViewController:_second];
    [_second didMoveToParentViewController:self];
}

- (void)SegmentedControlAction:(UISegmentedControl *)sender {
    if (sender.selectedSegmentIndex == 0) {
        _scrollView.contentOffset = CGPointMake(0, 0);
    } else {
        _scrollView.contentOffset = CGPointMake(self.view.frame.size.width, 0);
    }
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.x == 0) {
        _segmentedControl.selectedSegmentIndex = 0;
    }
    if (scrollView.contentOffset.x == self.view.frame.size.width) {
        _segmentedControl.selectedSegmentIndex = 1;
    }
}
@end

呈现效果:


截图.gif

相关文章

网友评论

      本文标题:iOS-SegmentedControl-分类控制器

      本文链接:https://www.haomeiwen.com/subject/uuinfftx.html