UIView установить рамку и установить центр не применяется

#ios #controls

#iOS #элементы управления

Вопрос:

Я ожидаю изменить UIView (UISegmentedView, чтобы быть более подробным), чтобы изменить положение, но оно не применяется:

 - (void)viewDidLoad
{
    [super viewDidLoad];

    self.segmentedControl.frame = CGRectMake(0, 0, 3 * 75, 50); // not working
    self.segmentedControl.center = self.view.center; // not working


    [self.segmentedControl setWidth:75 forSegmentAtIndex:0]; // working
    [self.segmentedControl setWidth:75 forSegmentAtIndex:1]; // working
    [self.segmentedControl setWidth:75 forSegmentAtIndex:2]; // working
}
 

Еще один результат заключается в том, что сегмент # 3 нельзя щелкнуть, хотя он включен, а правая часть сегмента # 2 также недоступна для просмотра, что заставляет меня думать, что существует ограничение ширины активной области управления. Представление создается в UIViewController inheritor и xib.

Комментарии:

1. Включено ли у вас автоматическое описание в вашем IB?

2. Откройте свой вид в построителе интерфейса. Теперь в утилитах покажите инспектор файлов. Вы найдете флажок «Использовать автозапуск». Попробуйте снять флажок.

3. да. вот и все! Спасибо

Ответ №1:

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

Откройте свой вид в построителе интерфейса. Теперь в утилитах покажите инспектор файлов. Вы найдете флажок «Использовать автозапуск». Если этот флажок установлен, попробуйте снять его, чтобы посмотреть, решит ли он вашу проблему.

Комментарии:

1. кстати, как я могу достичь той же цели (установить ширину сегментов), не отключая автоматическую компоновку?

2. Вы можете добиться этого, добавив ограничения к своему представлению. После этого вы можете связать эти ограничения так же, как и с любым другим IBOutlet, а затем изменить постоянное значение ограничения