Проблема с положением UIBarButton в iOS11

Только что установил Xcode9 и работаю над своим проектом. Я заметил, что кнопки на панели навигации теперь расположены по-другому.

Изображения ниже представляют собой панель навигации для разных спецификаций и Xcode:

  1. Текущее развертывание iPhone7plus под xcode8 текущее развертывание iPhone7plus под xcode8
  2. iPhone8plus в Xcode9

iPhone8plus в Xcode9

  1. iPhone8 в Xcode9

iPhone8 в Xcode9

Как видите, в iPhone7+ в текущем развертывании с предыдущим Xcode кнопки правильно расположены слева и справа.

Однако, когда я запускаю xCode9, кнопки и логотип немного отступают вправо.

Может ли кто-нибудь помочь мне, как я могу правильно расположить кнопки влево и вправо и правильно расположить логотип в центре?

Вот коды, настроенные для панели навигации и кнопок:

UIView * leftNaviNaviButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,delegate.windowWidth, 44)];
[leftNaviNaviButtonView setBackgroundColor:[UIColor grayColor]];

UIBarButtonItem * negativeSpacer = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]autorelease];
negativeSpacer.width = -16;

searchbarBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[searchbarBtn setFrame:CGRectMake(0,0,50,44)];
[searchbarBtn setImage:[UIImage imageNamed:@"search_btn.png"] forState:UIControlStateNormal];
[searchbarBtn.imageView setContentMode:UIViewContentModeScaleAspectFit];
[leftNaviNaviButtonView addSubview:searchbarBtn];

UIImageView * logoImageView = [UIImageView new];
[logoImageView setFrame:CGRectMake((delegate.windowWidth-170)/2,0,170,40)];
[logoImageView setImage:[UIImage imageNamed:@"app_headerlogo.png"]];
[logoImageView setContentMode:UIViewContentModeScaleAspectFit];
[leftNaviNaviButtonView addSubview:logoImageView];

UIButton *advanceSearch = [UIButton buttonWithType:UIButtonTypeCustom];
[advanceSearch setFrame:CGRectMake(delegate.windowWidth-50,0,50,44)];
[advanceSearch setImage:[UIImage imageNamed:@"sear  ch_adv.png"] forState:UIControlStateNormal];
[advanceSearch.imageView setContentMode:UIViewContentModeScaleAspectFit];
[leftNaviNaviButtonView addSubview:advanceSearch];

[self.navigationItem setLeftBarButtonItems:[NSArray arrayWithObjects:negativeSpacer,[[[UIBarButtonItem alloc] initWithCustomView:leftNaviNaviButtonView]autorelease], nil]];
[leftNaviNaviButtonView release];

Огромное спасибо заранее.


person Kevin    schedule 20.10.2017    source источник
comment
почему вы используете релиз. ARC управляет памятью и освобождает объект, когда это необходимо.   -  person luckyShubhra    schedule 21.10.2017
comment
Вы можете настроить панель навигации в раскадровке. См. мой предыдущий ответ здесь.   -  person luckyShubhra    schedule 21.10.2017
comment
Эту часть делал один из моих разработчиков, но он ушел из команды. Итак, теперь я должен сам об этом позаботиться, но я новичок в кодировании. Пытаюсь сейчас узнать как можно больше. С тех пор, как iOS11 изменилась, этот макет панели навигации вызывает у меня головную боль.   -  person Kevin    schedule 21.10.2017
comment
Я не уверен, как преобразовать текущий проект в раскадровку.   -  person Kevin    schedule 21.10.2017
comment
если вы можете поделиться своим классом контроллера представления и xib с моим почтовым идентификатором, возможно, я смогу помочь. Мой адрес электронной почты: [email protected].   -  person luckyShubhra    schedule 21.10.2017