#ios #uiview #uiviewcontroller
#iOS #uiview #uiviewcontroller
Вопрос:
Я использую следующий код в своем делегате приложения для программного создания окна приложения и корневого контроллера:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[UIViewController alloc] init];
self.window.rootViewController.view = [[UIView alloc] init];
self.window.rootViewController.view.backgroundColor = [UIColor redColor];
return TRUE;
}
Код работает нормально, однако представление, связанное с контроллером корневого представления, перекрывает строку состояния, чего я бы хотел избежать (см. Рисунок ниже).
Как мне поступить? В частности, я хочу иметь светло-серый фон для строки состояния (аналогично приложениям, созданным с помощью раскадровки), а также корректно обрабатывать изменение ориентации.
Спасибо
Ответ №1:
Ну, вы можете сделать что-то вроде следующего:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[UIViewController alloc] init];
self.window.rootViewController.view.backgroundColor = [UIColor whiteColor];
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(0,
[UIApplication sharedApplication].statusBarFrame.size.height,
[UIScreen mainScreen].bounds.size.width,
[UIScreen mainScreen].bounds.size.height)];
redView.backgroundColor = [UIColor redColor];
[self.window.rootViewController.view addSubview:redView];
[self.window makeKeyAndVisible];
return TRUE;
}
должно выглядеть так: