登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

查看: 164|回复: 6

iOS中分段控制器与UIScrollView结合使用,ios11控制中心

[复制链接]

328

主题

655

帖子

2429

金钱

手工艺人

发表于 2018-1-11 15:13:49 | 显示全部楼层 |阅读模式

        

        指定根视图:

        

[Java] 查看源文件 复制代码
    // 设置window的根视图控制器
    self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]];


定义属性

        

        

[Java] 查看源文件 复制代码
#import RootViewController.h
#import FirstViewController.h
#import SecondTableViewController.h
#interface RootViewController ()
#property (nonatomic, strong) UISegmentedControl *segmentedControl;
#property (nonatomic, strong) UIScrollView *scrollView;
#property (nonatomic, strong) FirstViewController *firstVC;
#property (nonatomic, strong) SecondTableViewController *secondTVC;
#end

#implementation RootViewController


创建实现:

        

        

[Java] 查看源文件 复制代码
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 适应scrollView
    self.automaticallyAdjustsScrollViewInsets = NO;
    
    self.segmentedControl = [[UISegmentedControl alloc] initWithItems:#[#first, #second]];
    self.navigationItem.titleView = self.segmentedControl;
    [self.segmentedControl addTarget:self action:#selector(segmentedControlAction: ) forControlEvents:UIControlEventValueChanged];
    self.segmentedControl.selectedSegmentIndex = 0;
    
    // 创建scrollView
    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 64)];
    [self.view addSubview:self.scrollView];
    // 设置scrollView的内容
    self.scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width * 2, [UIScreen mainScreen].bounds.size.height - 64);
    self.scrollView.pagingEnabled = YES;
    self.scrollView.bounces = NO;
    
    // 创建控制器
    self.firstVC = [FirstViewController new];
    self.secondTVC = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain];
    // 添加为self的子控制器
    [self addChildViewController:self.firstVC];
    [self addChildViewController:self.secondTVC];
    self.firstVC.view.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));
    self.secondTVC.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));
    [self.scrollView addSubview:self.firstVC.view];
    [self.scrollView addSubview:self.secondTVC.view];
    
    // 设置scrollView的代理
    self.scrollView.delegate = self;
}

        

        分段控制器点击方法

        

[Java] 查看源文件 复制代码
- (void)segmentedControlAction: (UISegmentedControl *)sender
{
    [self.scrollView setContentOffset:CGPointMake(sender.selectedSegmentIndex * self.scrollView.frame.size.width, 0) animated:NO];
}

- (void)scrollViewDidEndDecelerating: (UIScrollView *)scrollView
{
    NSInteger n = scrollView.contentOffset.x / scrollView.frame.size.width;
    self.segmentedControl.selectedSegmentIndex = n;
}


first/和second分别为UIViewController和UITableViewController只设颜色即可看效果(这里不做创建)

        

        最终效果:

        

        

        

        

                                               

23

主题

7147

帖子

1048

金钱

iOS大神

Rank: 6Rank: 6

分享大神

发表于 2018-1-11 15:15:10 | 显示全部楼层
小弟学习了~支持,支持

21

主题

7196

帖子

2620

金钱

手工艺人

发表于 2018-1-11 15:16:09 | 显示全部楼层
小弟学习了~支持,支持

16

主题

7181

帖子

1453

金钱

手工艺人

发表于 2018-1-11 15:18:07 | 显示全部楼层
相当不错,感谢无私分享精神!

0

主题

7142

帖子

-525

金钱

限制会员

发表于 2018-1-11 15:20:33 | 显示全部楼层
不错不错,楼主辛苦了。。。

15

主题

7145

帖子

1700

金钱

手工艺人

发表于 2018-1-11 15:23:41 | 显示全部楼层
学习...学习...

21

主题

7158

帖子

2664

金钱

手工艺人

发表于 2018-1-11 15:30:34 | 显示全部楼层
学习...学习...
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

每日头条

通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表