2010-09-04 9 views
10

Zrobiłem to, co powiedział, to pytanie tutaj: Landscape Mode ONLY for iPhone or iPadiPad szerokość i wysokość ramy bład w krajobrazie

ale view.frame.size.height jest nadal 1024, która to wysokość, gdy urządzenie jest w trybie portretowym, z pewnością kiedy interfejs obraca wartości przełącznika szerokości i wysokości?

(powiedzmy, że chcesz podzielić ekran na 3 widoki, dla aplikacji, która jest jednocześnie krajobrazowa i portretowa, a zrobiłeś view.frame.size.width/3, w krajobrazie, który nie byłby prawidłowy, ponieważ szerokość wartość nie byłaby w rzeczywistości szerokością)

Jestem pewien, że na iPhonie przełącznik szerokości i wysokości, dlaczego więc nie na iPadzie?


To uderzyło mnie znowu Nie pracuję też z końcówką, czy ktoś mógłby podać akceptowalną odpowiedź? (tj. taki, który nie wymaga ręcznego przełączania szerokości i wysokości)

Po przyznaniu nagrody, zacznę kolejną nagrodę za 250 i przyznam ją tej samej osobie.

+0

Rozpoczęcie nagród w tej sprawie. Nagroda zostanie przyznana pierwszemu, kto wystawi kod klasy, która robi to poprawnie. –

+0

Nie jestem pewien, co dokładnie zrobiłem, ale jakoś "naprawiłem" to. Pozbyłem się stalówki i przepisałem klasę –

+0

Pracuję bez stalówki. Ale nie mogę uzyskać prawidłowej szerokości i wysokości po autorotacji. –

Odpowiedz

24

Nie określono, który "widok" to zapytanie. Zakładając, że jest to widok najwyższego poziomu okna:

Powinieneś zapytać o widok bounds, a nie jego frame. frame jest we współrzędnej, w której widok jest zdefiniowany (świat zewnętrzny), dlatego może pozostać stały podczas obracania. bounds jest współrzędną używaną "wewnątrz" widoku i jego subviews. To się zmienia, kiedy się obracasz.

+0

który brzmi nieźle, ale jeśli ramka nie jest "prawidłowa", przyciski nie są klikalne itp. – Jake

2
+ (int) currentWidth 
{ 
UIScreen *screen = [UIScreen mainScreen]; 
int width = screen.currentMode.size.width; 
int height = screen.currentMode.size.height; 
return (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))? MAX (width, height) : MIN (width, height); 
} 

Spędziłem chwilę próbując wypracować najprostsze rozwiązanie frustrującego problemu, a to było najlepsze, jakie mogłem wymyślić. Mam nadzieję, że to pomoże.

+0

Do tej pory nie mogę zrobić nic lepszego. Dostaniesz nagrodę, jeśli nikt tego nie zrobi. –