你的位置:首页 > 软件开发 > 操作系统 > IOS 杂笔- 7(不要在UIViewController的loadView方法中改变状态栏的可视性)

IOS 杂笔- 7(不要在UIViewController的loadView方法中改变状态栏的可视性)

发布时间:2016-03-19 12:00:09
最好不要在UIViewController的loadView方法中改变状态栏的可视性(比如状态栏由显示变为隐藏、或者由隐藏变为显示),因为这样的操作会导致重复调用2次loadView和viewDidLoad方法。虽然运行效果是对的,但是系统连续调用了2次loadView和view ...

IOS 杂笔- 7(不要在UIViewController的loadView方法中改变状态栏的可视性)

最好不要在UIViewController的loadView方法中改变状态栏的可视性(比如状态栏由显示变为隐藏、或者由隐藏变为显示),因为这样的操作会导致重复调用2次loadView和viewDidLoad方法。

虽然运行效果是对的,但是系统连续调用了2次loadView和viewDidLoad方法,导致创建了2次UIView,造成了不必要的开销。为什么会产生这样的结果呢?原因是->

状态栏由显示变为隐藏,意味着屏幕的可用高度变长了,UIViewController的UIView的高度也要重新调整,因此系统会重新调用loadView方法创建UIView,创建完毕后再次调用viewDidLoad方法。

下面是代码演示,以及结果。

//// ViewController.m// CX 不要在UIViewController的loadView方法中改变状态栏的可视性//// Created by ma c on 16/3/19.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController-(void)loadView{    NSLog(@"loadView");  //隐藏状态栏  [UIApplication sharedApplication].statusBarHidden = YES;    UIView * view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];    view.backgroundColor = [UIColor orangeColor];}- (void)viewDidLoad {  [super viewDidLoad];  NSLog(@"viewDidLoad");  }@end

原标题:IOS 杂笔- 7(不要在UIViewController的loadView方法中改变状态栏的可视性)

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。