UIToolbar с UISegmentedControl AutoLayout (/ полная ширина)

У меня есть UIViewController с UIToolBar ниже UINavigationBar и UITableView ниже этого. Единственным UIBarButtonItem на моем UIToolBar является UISegmentedControl как на скриншоте ниже: введите описание изображения здесь

Однако как я могу заставить UISegmentedControl / UIBarButtonItem растягиваться, чтобы заполнить UIToolBar как в приложении App Store? введите описание изображения здесь

Имейте в виду, что я также поддерживаю ландшафтный режим, поэтому он должен автоматически растягиваться, чтобы соответствовать новой ширине, когда устройство повернуто. Этого я надеялся достичь с помощью AutoLayout , но насколько я знаю, я не могу использовать AutoLayout внутри UIToolBar .

Любые предложения (за исключением замены UIToolbar на UIView )?

2 Solutions collect form web for “UIToolbar с UISegmentedControl AutoLayout (/ полная ширина)”

Я создал панель инструментов с сегментированным управлением внутри, а затем сделал сегментированный элемент управления 320 широким. Затем я устанавливаю гибкие направляющие макетов с каждой стороны, чтобы заставить сегментированный элемент управления в центр. Это выглядит прекрасно в портрете, но сегментированный контроль не будет растягиваться для пейзажа.

Портрет (включает в себя установку и симулятор IB) введите описание изображения здесь

Пейзаж (также включает установку и симулятор IB) введите описание изображения здесь

Кажется, что в хранилище приложений есть сегментированный элемент управления, который установлен на определенную ширину, а затем просмотр не разрешается вращаться. Я понимаю, что вы хотите, чтобы сегментированный элемент управления менял ширину с макетом, но, к сожалению, это невозможно с автоматическим расположением на данный момент.

Мое предложение было бы, если бы вы действительно хотели, чтобы сегментированный элемент управления изменял ширину с вращением, было бы программно устанавливать ширину, когда устройство поворачивается в альбомное.

 - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { if(UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation)) { //set segmented control to landscape } if(UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation)) { //set segmented control to portrait width } } 

Еще одна вещь, если вы в конечном итоге используете это устройство для вращения устройства, вам все равно понадобятся эти гибкие распорки в IB, чтобы ваш сегментированный контроль был сосредоточен на панели инструментов

Вы можете сделать это с помощью кода. Что-то вроде этого:

 @interface ViewController () @property (strong, nonatomic) IBOutlet UIToolbar *toolbar; @property (strong, nonatomic) IBOutlet UISegmentedControl *segment; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _segment.translatesAutoresizingMaskIntoConstraints = NO; [_toolbar addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[_segment]-8-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_segment)]]; [_toolbar addConstraint:[NSLayoutConstraint constraintWithItem:_segment attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:_toolbar attribute:NSLayoutAttributeCenterY multiplier:1. constant:0.]]; } @end 
Interesting Posts

позиция: исправлено не работает на iPad и iPhone

Как вы используете API поиска iTunes Affiliates для поиска названия песни у конкретного исполнителя

iOS9 self.canDisplayBannerAds = true не показывает никаких объявлений

Использование значков Apple с iOS 6

Как сгенерировать штрих-код из строки в swift

WKWebView: получить название выбранной ссылки

Присоединение документов iWork из iCloud Document Picker не работает, потому что они не являются файлами каталогов

drawLayer: inContext – Непризнанный селектор, отправленный в экземпляр

Перехватить входящий вызов ios sdk (Non Jailbreak)

Предупреждение о синтаксисе из didReceiveRemoteNotification: fetchCompletionHandler

Загрузка NSURLSession не работает

Проблема повторного использования UITableViewCell. Изменение одной ячейки влияет на других

Цель C: Как разрешить утечку в коде (результаты, полученные с помощью инструмента)

Клавиатура по умолчанию не появляется, когда устройство сканера штрих-кода подключается по Bluetooth в IOS

Клавиатура UIWebView при настройке body contenteditable на true

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.