2012-07-08 7 views
5

Mam problem z moim interfejsem UIWebView. Gdy widok ładuje się w dowolnej orientacji, idealnie wypełnia całą stronę itp.Obrót krajobrazu UIWebView nie wypełnia widoku

Powiedzmy jednak, że jeśli załaduję go w pionie, a następnie obróć urządzenie, widok strony internetowej nie wypełnia się całkowicie na prawo, a ja nie mogę dla życia dowiedzieć się dlaczego.

To jest mój widok zrobił metodę ładowania

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib 

    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 320, 367); 

    }else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 480, 218); 
    } 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"measurements" ofType:@"png"]; 
    [measurementsWebView loadHTMLString:[NSString stringWithFormat:@"<html><body><img src=\"file://%@\"></body></html>",path] baseURL:nil]; 
    measurementsWebView.scalesPageToFit = YES; 

} 

Jeśli patrzę w konstruktorze Interface Próbuję odnaleźć panel, który pozwala mi ustawić rozszerzenie szerokość czy co tam to nazwać, ale wszystko co widzę czy to jest.

enter image description here

Każda pomoc będzie mile widziana

Odpowiedz

1

interfejsu konstruktora, menu rozwijane, gdzie jest napisane „Układ Prostokąt”, kliknij go i wybierz „Prostokąt frame”.

Alternatywnie można zastąpić metodę willAnimateRotationToInterfaceOrientation: w kontrolerze widoku i ustawić współrzędne/rozmiar ręcznie, tak jak w przypadku viewDidLoad.

+0

Dziwne, nawet jeśli robię to, nie zmieniając wyglądu menu ... Myślę, że może potrzebuję ponownie zainstalować xcode. Spróbuję terazAutototateToInterfaceOrientation teraz .. jednak spowoduje to zmianę rozmiaru ramki UIView tak, aby pasowała do widoku poziomego. – HurkNburkS

+0

Przepraszamy, zamierzałem napisać metodę "willAnimateRotationToInterfaceOrientation:". W podobny sposób do tego, w jaki sposób sprawdziłeś orientację w metodzie 'viewDidLoad', robisz to samo tutaj i dostosowujesz ramkę widoku. – sooper

+0

Dla twojego problemu z budowniczym interfejsu, polecam ci przeczytać ten post [tutaj] (http://stackoverflow.com/questions/9370072/xcode-4-3-not-presenting-autoresizing-panel-in-size-inspector) – sooper

4

Zamiast ustawiania ramki ręcznie, można również ustawić maski auto-rozmiaru jak:

measurementsWebView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

który zmieni rozmiar Webview w przypadku nie masz żadnych innych elementów na ekranie (co ja weź go, nie masz, z wartości użytych podczas zmiany rozmiaru measurementsWebView). Albo, prosto ze stalówką, jak pokazano na poniższym obrazie:

auto-resize from nib

Maski można ustawić klikając czerwonych pasków w oknie o nazwie autosizing w kierunku lewym dolnym rogu.

3

viewDidLoad jest uruchamiany raz - po załadowaniu widoku.

Jeśli chcesz ręcznie ustawić ramkę podczas obrotu, dodaj kod, aby zmienić jego rozmiar w viewDidLayoutSubviews, który jest wywoływany za każdym razem, gdy widok się obraca.

-(void)viewDidLayoutSubviews { 

    [super viewDidLayoutSubviews]; 

    self.measurementsWebView.frame = self.view.bounds; 

} 
+0

proste i łatwe, dzięki za to – peroija