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

指定根视图:

    // 设置window的根视图控制器
    self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]];

定义属性

#import "RootViewController.h"
#import "FirstViewController.h"
#import "SecondTableViewController.h"
@interface RootViewController ()<UIScrollViewDelegate>
@property (nonatomic, strong) UISegmentedControl *segmentedControl;
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) FirstViewController *firstVC;
@property (nonatomic, strong) SecondTableViewController *secondTVC;
@end

@implementation RootViewController

创建实现:

- (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;
}

分段控制器点击方法

- (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只设颜色即可看效果(这里不做创建)

最终效果:



iOS开发者交流群:446310206





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
☆☆☆ “MJCSegmentInterface分段控制器” ☆☆☆ 一款简单的类似百思不得姐主页导航栏下方的那个分段界面的控件,类似王者荣耀助手的聊天模块的导航栏下方的分段界面控件等等,简单的说,这是一款分段界面选择器 ☆☆ 如何导入使用框架方法 ☆☆ 可以打开 https://github.com/MJCIOS/MJCSegmentInterface 将项目下载下来,将MJCSlideInterface文件夹放入自己的项目 项目已支持pod导入,pod 'MJCSegmentInterface',如果没法导入,可以先[pod repo update]更新整个.cocoapods下的所有库... 有啥问题联系我QQ292251588,希望大神们和我多多交流,和大神们一起学习..... 技术交流群612845323,希望和大神们一起学习多多交流,互相学习些技术..... 希望大家多多支持,如果觉得好用,多多帮忙推荐,谢谢大家,谢谢大神,有啥问题,可以提给我... ☆☆ MJCSegmentInterface分段控制器创建(几行代码设置即可使用) ☆☆ NSArray *titlesArr = @[@"啦啦",@"么么",@"啪啪",@"啪啪",@"啪啪",@"啪啪",@"啪啪"]; MJCSegmentFaceControl *segmentsface = [[MJCSegmentFaceControl alloc]init]; segmentsface.frame = CGRectMake(0,64, MJCScreenWidth,MJCScreenHeight); [lala intoTitlesArray:titlesArr hostController:self]; [self.view addSubview:segmentsface]; MJCTestViewController *vc1 = [[MJCTestViewController alloc]init]; vc1.titlesCount = 1; MJCTestTableViewController *vc2 = [[MJCTestTableViewController alloc]init]; vc2.titlesCount = 2; MJCTestViewController1 *vc3 = [[MJCTestViewController1 alloc]init]; vc3.titlesCount = 3; MJCTestViewController *vc4 = [[MJCTestViewController alloc]init]; vc4.titlesCount = 4; MJCTestViewController *vc5 = [[MJCTestViewController alloc]init]; vc5.titlesCount = 5; NSArray *vcarrr = @[vc1,vc2,vc3,vc4,vc5]; [lala intoChildControllerArray:vcarrr]; 可自行修改各个属性,具体属性接口可进入项目查看.. /** 添加控制器的方法(添加控制器按照控制器添加的先后顺序与按钮对应的 */ -(void)intoChildControllerArray:(NSArray *)childControllerArray; /** 添加标题栏的方法 */ -(void)intoTitlesArray:(NSArray *)titlesArray hostController:(UIViewController *)hostController;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值