Я запускаю UIView с помощью xib программно:
- (id)initWithFrame:(CGRect)frame
{
self = [[[NSBundle mainBundle] loadNibNamed:@"MyViewNib" owner:self options:nil] objectAtIndex:0];
if (self)
{
//perform setup of various components
return self;
}
}
В этом представлении используются классы размеров для любой ширины, любой высоты и любой ширины, компактной высоты.
У меня есть UIButton в xib, на фоне которого мне нужно поместить круг, например:
self.closeButton.layer.cornerRadius = self.closeButton.frame.size.width / 2.0f;
self.closeButton.layer.backgroundColor = [UIColor colorWithWhite:164.0f / 255.0f alpha:1.0f].CGColor;
Если я попытаюсь установить угловой радиус кнопки в функции инициализации, когда я нахожусь на устройстве, использующем любую ширину, компактную высоту, рамка метки по-прежнему имеет значение «Любая ширина, любая высота». Я также пытался переопределить layoutSubviews и установить там значение, но безуспешно. Похоже, что ограничения класса размера применяются после layoutSubviews без другого вызова layoutSubviews, поскольку другие компоненты отображаются на экране правильно.
Итак, мне интересно, есть ли для меня хорошая точка входа, чтобы понять, где применяются классы размера, чтобы я мог правильно установить радиус угла фона кнопки. Я мог бы просто настроить кнопку программно, но я хотел бы выяснить, как это сделать, поскольку она, вероятно, снова появится в процессе преобразования в классы размеров.