Я установил пользовательские ширины для сегментов в UISegmentedControl
. Из-за этого SegmentedControl
не использует auto-layout
. (В раскадровке я применил constraint
на всех 4 сторонах SegmentedControl
.)Применить автоматическую компоновку к UISegmentedControl
Вот мой код:
CGFloat segmentWidth = self.segment.frame.size.width;
[self.segment insertSegmentWithTitle:@"titleName" atIndex:2 animated:NO];
[self.segment setWidth:segmentWidth/6 forSegmentAtIndex:1];
[self.segment setWidth:segmentWidth/6 forSegmentAtIndex:2];
[self.segment setWidth:segmentWidth/3 forSegmentAtIndex:0];
Вот изображение, чтобы проиллюстрировать то, что делает этот код:
Есть ли способ добавить auto-layout
в segments
?
Опубликовать скриншот о вашем autoLayout, кажется, что проблема связана с проблемой – Leo
'Автоматическая макета' применяется к' SegmentedControl' в целом, но не к отдельным «сегментам». Поэтому, когда 'view', содержащий' SegmentedControl', расширяется, «сегменты» не одинаково шире, последний «сегмент» становится широким, а не расширением «сегментов». Я знаю, что это немного запутанно. Дайте мне знать, если вы поняли – Jessica
Возможно, вы не можете установить отдельные сегменты с автоматической компоновкой. Об этом говорится в документе [Apple doc] (https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISegmentedControl_Class/index.html): ** Объект UISegmentedControl автоматически изменяет размеры сегментов, чтобы соответствовать пропорционально внутри их супервизор, если у них нет определенной ширины. ** Подобно 'textLabel' для' UITableViewCell', Apple обрабатывает некоторые GUI для согласованности. Если вы хотите больше контролировать его, вы всегда можете сделать свой пользовательский SegmentControl, например, кнопками. –