2010-01-01 17 views
6

Mam ustawioną aplikację, aby działało automatyczne obracanie. Rzeczy takie jak tableviewcontrollers i tabbarcontrollers automatycznie zmieniają rozmiar ich samych bez potrzeby pisania kodu. Jednak potrzebuję mojej przeglądarki itp., Aby zmienić rozmiar, gdy urządzenie jest ustawione na krajobraz. Ustawiłem:UIView maska ​​autouzyskiwania nie działa dla mnie

webView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

, ale po obróceniu urządzenia nie zmienia rozmiaru. Wdrażam to niepoprawnie?

Odpowiedz

4

zaimplementować następujące moim zdaniem kontrolera:

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    [self.webView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
} 

wydaje się działać dobrze.

+0

Po prostu próbowałem go, ale nie wydaje się, aby uzyskać wywołanie, gdy obracam symulator. Włożyłem tam NSLOG i nie jest drukowany. – john

+1

Czy umieszczasz to w kontrolerze widoku? Czy zastępujesz inne metody rotacji, takie jak '-shouldAutorotateToInterfaceOrientation:'? –

+2

Używam Twojego rozwiązania i działa świetnie, dopóki obracam urządzenie co najmniej raz. Jeśli mój widok zostanie załadowany w trybie portretu, nie będzie renderował zmiany rozmiaru ekranu, dopóki nie obrócę urządzenia oczywiście. Jak mogę go skonfigurować, aby zmieniał się z chwilą załadowania widoku? –

16

Myślę, że w końcu to rozgryzłem. Wygląda na to, że widok główny pliku NIB nie pozwala na określenie elastycznej szerokości i elastycznej wysokości maski autouzupełniania w programie budującym interfejs (przynajmniej nie od wersji 3.2). Spójrz. Umieszczając poniższy kod w swoim viewDidLoad wydaje się rozwiązać problem:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

Zrobiłem to po wywołaniu super.

Powiązane problemy