Пользовательские проблемы вращения UIView - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть UIView, который я хочу изменить размер и положение, когда вид вращается. Тем не менее, я должен быть в состоянии сделать это программно, не используя настройки макета и автоматического изменения размера. С этой целью я попытался изменить рамку и границы представления, когда устройство вращается, и вызвать перерисовку, но независимо от того, какую комбинацию переменных я использую, результат всегда получается неверным. Я просто не могу понять, что происходит, чтобы испортить код, и здесь слишком много кода, чтобы публиковать здесь. Может ли кто-нибудь дать мне какие-либо советы или методы, как этого можно достичь? Я просто не знаю, где еще искать.

Это код, который я использую для макета портрета, который работает:

clusterMap.frame = CGRectMake(0, self.view.frame.size.height/2, 
        self.view.frame.size.width, 
        self.view.frame.size.height/2);
clusterMap.bounds = CGRectMake(-clusterMap.frame.size.width/2, 
         -clusterMap.frame.size.height/2,
         clusterMap.frame.size.width,
         clusterMap.frame.size.height);
[clusterMap setNeedsDisplay];

Но когда я пытаюсь использовать адаптированную версию этого кода с другими цифрами, он просто отображается так, как если бы экран был портретным. Если я поменяю фигуры так, что некоторые из них будут портретными, а некоторые - пейзажными, произойдут все виды странных вещей. Один пример, который я могу описать, состоит в том, что изображение может рисоваться в правильных пропорциях, но обрезаться до границы неправильной пропорции. Я пробовал каждую комбинацию цифр, о которой я могу думать, систематически меняя ширину и высоту между парными значениями по одному, и ни одна из этих комбинаций не работает.

1 Ответ

2 голосов
/ 27 сентября 2010

Вам нужно использовать willAnimateRotationToInterfaceOrientation его контроллера для достижения этой цели.Как вы сказали, вы должны изменить его свойство фрейма ^^

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}

Но если вам нужна дополнительная помощь, может быть полезно добавить какой-нибудь фрагмент кода ^^

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