Я пытаюсь создать прозрачную UINavigationBar
и вот что я делаю:Почему вид UINavigationController корневой контроллер меньше, чем навигационный контроллер
Во-первых, у меня есть navVC и общее VC в корневой VC в моем коде.
SNLoginViewController *loginVC = [[SNLoginViewController alloc] init];
SNLoginNavController *loginNavVC = [[SNLoginNavController alloc] initWithRootViewController:loginVC];
[self presentViewController:loginNavVC animated:YES completion:nil];
Я не переопределить init
метод SNLoginViewController
.
А вот реализация initWithRootViewController:
:
- (instancetype)initWithRootViewController:(UIViewController *)rootViewController {
self = [super initWithRootViewController:rootViewController];
if (self) {
UIImage *bgImage = [UIImage imageNamed:@"bg"];
UIImageView *bgImageView = [[UIImageView alloc] initWithImage:bgImage];
bgImageView.frame = [UIScreen mainScreen].bounds;
[self.view insertSubview:bgImageView atIndex:0];
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"transparent"]//transparent is a transparent png
forBarMetrics:UIBarMetricsCompact];
self.navigationBar.shadowImage = [UIImage imageNamed:@"transparent"];
self.navigationBar.barStyle = UIBarStyleBlackTranslucent;
[self.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName: [UIFont systemFontOfSize:18]}];
self.navigationBar.clipsToBounds = YES;
}
return self;
}
Используя эти коды (setBackgroundImage:forBarMetrics:
) я должен был быть в состоянии сделать навигационную панель прозрачной, но что-то пошло не так. Основная проблема заключается в том, что кадр loginVC
меньше, чем loginNavVC
.
http://static.zybuluo.com/zhengbuqian/bcdt5ht5nsv69izgasqzdyhz/Snip20160504_1.png
На рисунке выше выбранного вида имеет loginVC
и один слева имеет loginNavVc
. loginVC
меньше, чем loginNavVc
.
Но в viewDidLoad
из loginVC
распечатать выбранный вид, его рама (0 0; 320 568), но при печати его описание в иерархии видов (тот же адрес в памяти), его рама (0 64; 320 504). Почему это произойдет? Как сделать его полноэкранным (не полный экран, как игры, строка состояния должна все еще быть заметной)?
Какие опции выбраны в раскадровке для регулировки прокрутки и расширения краев? – Wain