Moje subviews mają inny układ w orientacji pionowej i poziomej. Układ jest oparty na ramce superview i nie jest trywialny (nie można go osiągnąć za pomocą automatycznych sprężyn i rozpórek).Uzyskiwanie prawidłowej ramki wewnątrz willRotateToInterfaceOrientation
Problem polega na tym, że jeśli zmieniam ramkę subViews podczas willRotateToInterfaceOrientation, animacja jest prawidłowa, ale ramka jest superView jest nadal ramką ze starej orientacji.
Jeśli zmieniam subViews podczas didRotateFromInterfaceOrientation, ramka jest superView jest rzeczywiście poprawna, ale zmiana ramki występuje tylko po animacji obracania i nie wygląda dobrze.
Jaki jest poprawny sposób zmiany ramek subViews podczas zmiany orientacji?
Rozwiązałem ten problem, pisząc metodę w każdym wydziale, który będzie obsługiwał część zmiany ramki. Ustawię ramkę widoku rodzica w willRotateToInterfaceOrientation, a następnie wygeneruję nową podobną ramkę za pomocą funkcji CGFrameMake i przekaż ją do każdego subView. To zadziałało dla mnie .... sprawdź czy to jest pomocne. – Mohammad
Nie bardzo rozumiem twoją odpowiedź. W willRotateToInterface wciąż nie znam ramki superView, ponieważ rotacja jeszcze się nie wydarzyła. To jest problem. – adamsiton
Nie używam ramki superView do obracania subviews. Obliczyłem, jaka byłaby wartość ramki superView po obrocie, a następnie wykonam nowy CGRect na podstawie obliczeń, a następnie przekażę go do metody OperationOrientation każdego subView. Jeśli nie jesteś w stanie obliczyć, jaka byłaby wartość ramki superView po obrocie, powyższe nie zadziała. – Mohammad