2013-05-14 23 views
7

Wiem, że to pytanie było wielokrotnie zadawane, ale nie mogę go uruchomić. W skrócie, mój interfejs UIWebview pobiera kod HTML, który nie ma ustalonej wysokości (szerokość zawsze jest taka sama), po prostu chcę odpowiednio zmienić wysokość.Zmiana rozmiaru UIWebview do zawartości

Próbowałem wielu poprawek, które znalazłem w Internecie, ale mój problem polega na tym, że widok internetowy zmieni się na prawidłowy rozmiar, ale tylko na krótką sekundę, a następnie z powrotem do oryginalnego rozmiaru.

Chciałbym podkreślić, że mój pogląd jest przywoływany przez segue, to jedyna rzecz, o której myślę, że jest inna! Zastanawiam się, czy kod działa, ale gdy segue kończy się przenikaniem, flipem lub czymkolwiek innym, przerysowuje widok sieciowy.

Oto mój obecny kod (jak mówię, próbowałem wielu poprawek, w tym wersje Java, z których większość robi to samo), grałem również z scalesPageToFit i srollEnabled plus kilka ticks w Storyboard.

-(void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"Starting Size : %f", headerWebView.frame.size.height); 

    headerWebView.scalesPageToFit = YES; 
    headerWebView.scrollView.scrollEnabled = NO; 
    CGRect frame = headerWebView.frame; 

    frame.size.width = frame.size.width; // I used this to test, I put 200 in and it changes then flicks back too 
    frame.size.height = 1; 

    headerWebView.frame = frame; 
    frame.size.height = headerWebView.scrollView.contentSize.height; 
    headerWebView.frame = frame; 

    NSLog(@"Finished Size : %f", headerWebView.frame.size.height); 
} 

Logi mówią;

Zaczynając Rozmiar: 176,000000 Rozmiar końcowy: 246,000000

Ktoś ma pomysł, dlaczego Webview pojawia porządku wystarczająco długo dla mnie zauważy, a następnie „kurczyć” z powrotem?

Odpowiedz

3

Ktoś ma pomysł, dlaczego Webview pojawia się w porządku tylko wystarczająco długo dla mnie zauważy, a następnie „kurczyć” z powrotem?

Powiedziałbym, że wydaje się być w porządku, ponieważ pokazuje zmiany w trakcie ich działania. Dlaczego nie ukrywać widoku internetowego w jakimś wcześniejszym punkcie cyklu życia widoku lub nawet w webViewDidFinishLoading? Dzielę się ustawieniami układu z IB w przypadku, które mogą zapewnić dalszą pomoc. Proszę doradzić, czy to pomaga i czy potrzebne są dodatkowe informacje. Używam sprężyn i rozporek, a nie układ auto. Chciałbym wypróbować te metody, aby sprawdzić, czy to działa dla Ciebie.

Ukrywanie ładowanych danych w widoku w przeglądarce uniemożliwia użytkownikom wyświetlanie czegokolwiek, dopóki wszystkie moje ustawienia/dane nie zostaną wprowadzone.

NSString *path = [[NSBundle mainBundle] bundlePath]; 
    NSURL *baseURL = [NSURL fileURLWithPath:path]; 

    [webView setAlpha:0]; 
    [webView loadData:[dataString dataUsingEncoding:NSUTF8StringEncoding] MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:baseURL]; 

    [UIView animateWithDuration:0.1 animations:^{ 

     [webView setAlpha:1.0]; 

    } completion:nil]; 

Web View Springs and Struts Web View Settings

+0

Dzięki za informacją, z innych powodów skończyło się robi to w inny sposób. Jednak wyłączyłem autolayout i użyłem sprężyn, które naprawiły wiele innych problemów. –

+0

@RecycledSteel - zadowolone rzeczy się udało. Czy zaakceptowałbyś moją odpowiedź jako odpowiedź na twoje pierwotne pytanie? –