189 8069 5689

iOS多控制器如何实现带滑动动画-创新互联

这篇文章主要为大家展示了“iOS多控制器如何实现带滑动动画”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS多控制器如何实现带滑动动画”这篇文章吧。

创新互联建站总部坐落于成都市区,致力网站建设服务有成都网站建设、网站建设、网络营销策划、网页设计、网站维护、公众号搭建、微信小程序、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!

主控制器 ,管理控制器.h文件

//宏
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height

#import "MYMainViewController.h"
#import "MYFirstViewController.h"
#import "MYSecondViewController.h"
#import "MYThirdViewController.h"

@interface MYMainViewController ()
//控制器名
@property (nonatomic, strong) NSArray *VcNames;
//选择栏
@property(nonatomic, strong) UIView *clickBar;
//底部容器scrollView
@property (strong, nonatomic) UIScrollView *containerScrollerView;

@end

. m 文件

底部scrollView , 用于滑动

@implementation MYMainViewController

- (UIScrollView *)containerScrollerView
{
  if (!_containerScrollerView) {
    _containerScrollerView = [[UIScrollView alloc]init];
    _containerScrollerView.pagingEnabled = YES;
    _containerScrollerView.showsVerticalScrollIndicator = NO;
    _containerScrollerView.showsHorizontalScrollIndicator = NO;
    _containerScrollerView.contentSize = CGSizeMake(kScreenWidth *self.VcNames.count,kScreenHeight);
    _containerScrollerView.backgroundColor = [UIColor whiteColor];
    _containerScrollerView.delegate = self;
  }
  return _containerScrollerView;
}

初始化顶部选择栏

//三个子控制器
- (NSArray *)VcNames
{
  if (!_VcNames) {
    _VcNames = @[@"控制器一",@"控制器二",@"控制器三"];
  }
  return _VcNames;
}

//点击选择栏
- (UIView *)clickBar
{
  if (!_clickBar) {
    _clickBar = [[UIView alloc]init];
    _clickBar.backgroundColor = [UIColor lightGrayColor];

    CGFloat width = kScreenWidth / 3;
    CGFloat height = 44;
    //初始化按钮
    for (NSInteger index = 0; index < 3; index++) {

      UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
      [button setTitle:self.VcNames[index] forState:UIControlStateNormal];
      [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
      button.frame = (CGRect){width *index,0,width,height};
      [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];

      //绑定tag值
      button.tag = index;
      [_clickBar addSubview:button];
    }
  }
  return _clickBar;
}

viewDidLoad

- (void)viewDidLoad {
  [super viewDidLoad];

  self.edgesForExtendedLayout = 0;
  //初始化选择栏
  [self initClickBar];

  //初始化底部scrollView容器
  [self initScrollViewContainer];

  //初始化子控制器
  [self addChildControllers];

}

添加子控制器 , 初始化UI

//按钮选择栏
- (void)initClickBar
{
  [self.view addSubview:self.clickBar];
  self.clickBar.frame = (CGRect){0,0,[UIScreen mainScreen].bounds.size.width,44};
}

//初始化滑动容器
- (void)initScrollViewContainer
{
  [self.view addSubview:self.containerScrollerView];
  self.containerScrollerView.frame = CGRectMake(0,44,kScreenWidth, kScreenHeight );
}

//添加子控制器
- (void)addChildControllers
{
  //为了方便直观 , 在此处设置背景色 (实际开发中,不能在这里设置 , 原因是这里只要调用到了控制器的view属性 , 该控制器将会执行viewDidLoad方法 , 相当于直接一开始就将三个控制器的所有UI和网络请求全加载完了 , 负荷会相当重)
  MYFirstViewController *firstVc = [[MYFirstViewController alloc]init];
  firstVc.view.backgroundColor = [UIColor redColor];
  [self addChildViewController:firstVc];

  MYSecondViewController *secondVc = [[MYSecondViewController alloc]init];
  secondVc.view.backgroundColor = [UIColor blueColor];
  [self addChildViewController:secondVc];

  MYThirdViewController *thirdVc = [[MYThirdViewController alloc]init];
  thirdVc.view.backgroundColor = [UIColor yellowColor];
  [self addChildViewController:thirdVc];

  //默认展示第一个子控制器
  [self scrollViewDidEndDecelerating:self.containerScrollerView];
}

按钮点击事件实现 , 代理方法实现

//选择栏按钮点击事件
- (void)buttonClick:(UIButton *)button
{
  [self.containerScrollerView setContentOffset:CGPointMake(button.tag *kScreenWidth, 0) animated:YES];
}

//滑动减速时调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
  //获取contentOffset
  CGPoint currentOffset = scrollView.contentOffset;

  NSInteger page = currentOffset.x / kScreenWidth;

  //取出对应控制器
  UIViewController *viewController = self.childViewControllers12下一页阅读全文

以上是“iOS多控制器如何实现带滑动动画”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:iOS多控制器如何实现带滑动动画-创新互联
当前网址:http://cdxtjz.cn/article/djpesd.html

其他资讯