IOS 雜筆- 7(不要在UIViewController的loadView方法中改變狀態列的可視性),uiviewcontroller
最好不要在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