Я столкнулся с той же проблемой, поскольку iOS 11 и Xcode 9 начали управлять панелями навигации с автоматическим макетом вместо фреймов, вы должны знать о макете панели навигации.
В сеансе 204 WWDC «Обновление вашего приложения для iOS 11» было указано, что UIToolBar и UINavigationBar были обновлены для использования автоматического макета, и чтобы избежать пользовательских представлений с нулевым размером, вы должны знать об этом несколько вещей.
UINavigation и UIToolBar предоставляют позицию, не заботясь об этом.
Вы должны указать размер пользовательского представления одним из следующих способов:
- Ограничения по ширине и высоте.
- Реализовать встроенный ContentSize
- Соедините свои подпредставления через ограничения.
Отвечая на ваш вопрос, я установил titleView с помощью ImageView, указав размер двумя разными способами:
Явное указание высоты и ширины.
-(void)updateNavTitleView{
UIImageView *imageView = [[UIImageView alloc] initWithImage:[ UIImage imageNamed:@"TitleViewImage"]];
[imageView.widthAnchor constraintEqualToConstant:160].active = YES;
[imageView.heightAnchor constraintEqualToConstant:44].active = YES;
self.navigationItem.titleView = imageView;
}
Или установите режим соотношения сторон как aspectFit
-(void) updateNavTitleView{
UIImageView *imageView = [[UIImageView alloc] initWithImage:[ UIImage imageNamed:@"TitleViewImage"]];
[imageView setContentMode:UIViewContentModeScaleAspectFit];
self.navigationItem.titleView = imageView;
}
Если вы хотите посмотреть сеанс, сеанс 204
person
Andrés Sánchez
schedule
04.12.2017