2013-05-14 38 views
7

Tôi biết điều này đã được hỏi nhiều lần nhưng tôi không thể làm cho nó hoạt động. Trong ngắn hạn UIWebview của tôi kéo trong một số HTML trong đó có một chiều cao cố định không có (chiều rộng luôn luôn giống nhau), tôi chỉ muốn chiều cao thay đổi cho phù hợp.Chiều cao thay đổi kích thước UIWebview để phù hợp với nội dung

Tôi đã thử một số bản sửa lỗi mà tôi đã tìm thấy trực tuyến nhưng vấn đề của tôi là chế độ xem web sẽ thay đổi thành kích thước chính xác nhưng chỉ trong một giây ngắn và sau đó quay lại kích thước ban đầu.

Tôi nên chỉ ra rằng chế độ xem này được gọi bởi một khoảng cách, đó là điều duy nhất tôi có thể nghĩ là khác! Tôi tự hỏi nếu các mã hoạt động nhưng khi segue kết thúc nó crossfade, lật hoặc bất cứ điều gì nó sau đó vẽ lại webview. Đây là mã hiện tại của tôi (như tôi đã nói rằng tôi đã thử nhiều bản sửa lỗi bao gồm các phiên bản Java hầu hết trong số đó làm tương tự), tôi cũng đã chơi với scalesPageToFit và srollEnabled cộng với một vài dấu tích trong Bảng phân cảnh.

-(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); 
} 

Nhật ký nói;

Bắt đầu Kích thước: 176,000000 Hoàn Kích thước: 246,000000

Bất cứ ai có một ý tưởng là tại sao WebView xuất hiện tốt chỉ đủ dài cho tôi để thông báo và sau đó "thu nhỏ" trở lại?

Trả lời

3

Bất cứ ai cũng có ý tưởng về lý do tại sao Webview xuất hiện tốt chỉ đủ dài để tôi nhận thấy và sau đó "thu nhỏ" trở lại?

Tôi cho rằng điều này có vẻ tốt vì bạn đang hiển thị các thay đổi khi chúng đang diễn ra. Tại sao không ẩn chế độ xem web tại một số điểm trước đó trong vòng đời xem hoặc thậm chí trong webViewDidFinishLoading? Tôi đang chia sẻ cài đặt bố cục của mình từ IB trong trường hợp có thể hỗ trợ thêm. Xin vui lòng cho biết nếu điều này giúp hoặc cho dù thông tin bổ sung là cần thiết. Tôi đang sử dụng lò xo và thanh chống thay vì bố cục tự động. Tôi sẽ thử phương pháp này để xem nó có hiệu quả với bạn hay không.

Ẩn tải dữ liệu chế độ xem web của tôi ngăn người dùng nhìn thấy bất cứ điều gì cho đến khi tất cả các cài đặt/dữ liệu của tôi được đặt ra.

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

Cảm ơn thông tin, vì những lý do khác tôi đã kết thúc làm việc đó một cách khác. Tuy nhiên, tôi đã tắt autolayout và sử dụng lò xo một thanh chống cố định rất nhiều vấn đề khác ở đâu. –

+0

@RecycledSteel - những điều thú vị đã diễn ra. Bạn có xem xét chấp nhận câu trả lời của tôi như một câu trả lời cho câu hỏi ban đầu của bạn không? –

Các vấn đề liên quan