У меня есть странная проблема, которая, вероятно, имеет очень простое решение, я просто не вижу его...
У меня есть класс UIView, который содержит кнопку в качестве подвида, охватывающую 4/5 ширины и одну треть высоты представления. Когда родительский вид изменяется (например, имеет высоту и половину ширины), кнопка должна оставаться там, где она находится (верхняя треть родительского вида), и теперь также имеет половину ширины и еще одну треть новой высоты.
Это означает:
Parent before: Frame (0,0,100,100)
Button before: Frame (0,0,80,33.3)
Parent after: Frame (0,0,50,50)
Button after: Frame (0,0,40,16.7)
Проблема в том, что кнопка после всегда имеет Frame (0,0,30,0). Кажется, что новую ширину и высоту кнопки я только что получил, вычитая 50-пиксельное изменение вместо пропорционального изменения размера. Должно быть что-то очень глупое, но я никак не могу найти.
Вот код моего класса UIView:
-(id)init
{
self = [super init];
if(self)
{
self.autoresizesSubviews = true;
self.frame = CGRectMake(0,0,100,100);
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0,0,80, self.frame.size.height / 3);
button.autoresizingMask = UIViewAutoresizingFlexibleHeight
|UIViewAutoresizingFlexibleWidth;
[self addSubview:button];
}
return self;
}
У кого-нибудь есть идея? Я уже испробовал несколько вариаций флагов autoresizeMask, но безрезультатно — и приведенные выше флаги тоже должны быть правильными...