Подкласс UIView не будет автоматически изменять размер - PullRequest
2 голосов
/ 23 января 2010

Я искал справочную информацию по изменению размера, но мне не удалось найти много. Я знаю, что мне нужно установить autoresizesSubviews в суперпредставлении и autoresizingMask в подпредставлении.

Я сделал это, и мои UIImageViews правильно изменили размер, но мой пользовательский подкласс UIView - нет.

Код для UIImageView:

UIImageView *newX = [[[UIImageView alloc] initWithImage:dot] autorelease];
[newX setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[newX setFrame:CGRectMake(0, 0, self.view.bounds.size.width, 1)];
[self.view addSubview:newX];

Код для пользовательского подкласса UIView:

trace = [[TraceView alloc] initWithFrame:self.view.bounds];
[trace setAutoresizingMask:(UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin)];
[self.view addSubview:trace];

Из того, что я могу сказать, представление вращается, как и ожидалось, но не изменяет размер. Я больше не вижу его нижней части, и он не заполняет экран справа. Нужно ли что-нибудь добавлять в подкласс UIView, чтобы изменение размера работало правильно?

EDIT: Я изменил autoresizingMake на (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) и назвал [subview setNeedsDisplay]; Я не уверен, почему это необходимо, так как UIImageViews работают без него, но теперь он ведет себя как ожидалось.

Ответы [ 2 ]

4 голосов
/ 23 января 2010

Я думаю, вам не хватает UIViewAutoresizingFlexibleHeight или ширины в подпредставлении. В противном случае, я думаю, что вид просто перемещается в соответствии с полями, но не меняет размер.

0 голосов
/ 24 января 2010

Вы упоминаете вращение. Правильно ли изменяется размер суперпредставления, содержащего ваш пользовательский вид? Если сомневаетесь, установите его фон в какой-то странный цвет. Если после изменения ориентации размер изменился неправильно, справа вы должны увидеть белую или серую полосу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...