OC xcode 两个view重叠,先后层次关系的调整

451 阅读1分钟

  • 目标: 调整frontView和ScrollView的层级关系

  • 方法一:

在voidDidLoad方法里面写

[self.view bringSubviewToFront:_frontView];

  • 方法二:

view 的 subviews 组成的数组(最大的view下面所有的小view根本上是一个NSArray数组,每一个小view都是NSArray数组的一个OC对象,所以可以使用NSArray的方法,找到index来进行交换

@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *subviews;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    NSUInteger index1 = [self.view.subviews indexOfObject:_frontView];
    NSUInteger index2 = [self.view.subviews indexOfObject:_scrollView];
    
    [self.view exchangeSubviewAtIndex:index2 withSubviewAtIndex:index1];
}
  • 方法三:

重写

- (void)viewWillAppear; // Called when the view is about to made visible. Default does nothing

Called after the view controller’s view has been loaded into memory is about to be added to the view hierarchy(层次等级) in the window.

在 viewDidLoad执行完毕后,专门用来划分层级的方法

view controller 加载的整个声明周期跟顺序:先加载 view 数据到内存 进行 loadView 方法, 然后加载完毕执行这一步是 viewDidLoad, 然后根据布局, 再去安排 view 跟 subviews 的位置大小,安排完之后 会调用 viewWillAppear

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.view bringSubviewToFront:_frontView];
}