UIView меняет ширину после переключения ориентации на альбомную?

У меня есть UIView с двумя подвидами. Для UIView установлено значение UIViewAutoresizingFlexibleWidth. Теперь, когда он входит в layoutSubviews, он изменяет размеры фреймов подвидов относительно UIView следующим образом:

rect.size.width  = self.frame.size.width - rect.origin.x - textLabel.frame.origin.x;

Но проблема возникает в ландшафтном режиме, потому что в портретном режиме self.frame.size.width (и границы в этом отношении) отвечают 768 в начале и 788 после того, как он завершит вращение. Это означает, что когда он вращается, кажется, что он добавляет 20 пикселей, что, как я полагаю, является строкой состояния.

Когда я жестко кодирую 768, все работает, как и ожидалось. Но я этого не хочу, конечно. Я мог бы сохранить начальное состояние в var и использовать его, но я не думаю, что это правильный способ сделать это.

У кого-нибудь есть решение?


person Mark    schedule 16.11.2010    source источник


Ответы (1)


Привет,

в моем приложении я столкнулся с той же проблемой. Чтобы решить эту проблему, я просто использовал метод didRotateFromInterfaceOrientation: для изменения размера представления при повороте устройства.

self.view.frame = CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height);

Надеюсь, это поможет.

person Sniffer    schedule 16.11.2010