美文网首页
父子控制器的重要性(2018-06-03)

父子控制器的重要性(2018-06-03)

作者: 小的小碰撞 | 来源:发表于2018-06-03 16:26 被阅读0次

控制器父子关系建立的原则

  • 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这两个控制器也应该为父子关系
[a.view addSubView: b.view];
[a addChildViewController: b];
  • 间接的添加 a的view上添加OtherView ,otherView上添加b控制器 也应该遵循父子关系原则
[a.view addSubView :OtherView];
[OtherView addSubView: b.view];
[a addChildViewController: b];
  • 如果不建立父子关系的后果会怎样?
      1. 如果出现横竖屏需求等子控制器不会接收到信息
    • 2.控制器的一些方法子控制器无响应

获得所有的子控制器

@property(nonatomic,readonly) NSArray *childViewControllers;

添加一个子控制器

//OneViewController成为了self的子控制器
//self成为了OneViewController的父控制器
[self addChildViewController:[[OneViewController alloc] init]];
// 通过addChildViewController添加的控制器都会存在于childViewControllers数组中

获得父控制器

@property(nonatomic,readonly) UIViewController *parentViewController;

将一个控制器从它的父控制器中移除

// 控制器a从它的父控制器中移除
[a removeFromParentViewController ];

// 当一个控制器从父控制器中移除时。会自动调用控制器的didMoveToParentViewController:方法,并且参数是nil
    [self.childViewControllers[0] removeFromParentViewController];

didMoveToParentViewController

- (void)willMoveToParentViewController:(UIViewController *)parent

  • 当一个视图控制器从视图控制器容器中被添加或者被删除之前,该方法被调用
  • parent:父视图控制器,如果没有父视图控制器,将为nil

注意点:

  • 1.当我们向我们的视图控制器容器中调用removeFromParentViewController方法时,必须要先调用该方法,且parent参数为nil:
    [将要删除的视图控制器 willMoveToParentViewController:nil];
  • 2.当我们调用addChildViewController方法时,在添加子视图控制器之前将自动调用该方法。所以,就不需要我们显示调用了。

过渡动画

  • 添加一个中间层的view,做动画效果避免 全屏的动画
 CATransition *animation = [CATransition animation];
    animation.type = @"cube";
    animation.subtype = index > oldIndex ? kCATransitionFromRight : kCATransitionFromLeft;
    animation.duration = 0.5;
    [self.contentView.layer addAnimation:animation forKey:nil];

autoresizingMask

  • 默认情况下,所有控制器的view的autoresingMask属性都包含了UIViewAutoresizingFlexibleWidthUIViewAutoresizingFlexibleHeight两个值
// self.view == 600x600 --> 375x667
// one.view == 100x100 --> 缩小x增大
a.view.autoresizingMask = UIViewAutoresizingNone;

相关文章

  • 父子控制器的重要性(2018-06-03)

    控制器父子关系建立的原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这两个控制器也应...

  • 父子控制器相关

    父子控制器:导航控制器,UITabBarViewController等。 父子控制器的设计原理:a控制器的View...

  • 父子控制器

    父子控制器的小tips 控制器父子关系的建立原则 如果两个控制器的view是父子关系(不管直接还是间接的父子关系)...

  • 父子控制器相关

    父子控制器相关 控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么...

  • 父子控制器详细解析

    父子控制器详细解析(一)父子控制器详细解析(二) —— 添加视图的层级问题

  • 父子控件、static的作用

    控制器父子关系的建立原则 - 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器...

  • iOS-父子控制器

    控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应...

  • 父子控制器

    控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应...

  • 浅说控制器父子关系及示例展示

    控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应...

  • 【转载XMG】父子控制器

    控制器父子关系的建立原则 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应...

网友评论

      本文标题:父子控制器的重要性(2018-06-03)

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