2013-04-05 36 views
7

Tôi đã thử mọi hoán vị được biết đến với nhân loại và tôi không thể có được một UIWebView với kích thước phù hợp trong chế độ xem dạng phương thức cho iPad. Trang web vẫn hiển thị toàn bộ chiều rộng chân dung của iPad là 768 điểm.Làm thế nào để kích thước UIWebView trong một UIModalPresentationFormSheet?

Tôi làm cách nào để yêu cầu UIWebView hiển thị chiều rộng 540 điểm?

Tôi nghĩ 'scalesPageToFit' là nghĩa vụ phải làm điều này nhưng nó không hoạt động.

Tôi đã thử đặt chế độ xem web thành kích thước của chế độ xem biểu mẫu là 540 x 576 có điều hướng và thanh trạng thái. Chiều cao là không liên quan mặc dù.

Tôi đã thử thêm UIWebView vào UIView trong bảng phân cảnh với tất cả các cài đặt thay đổi kích thước. Sau đó tôi gỡ bỏ UIWebView và thêm nó theo chương trình.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect aFrame = self.view.frame; 

    if (IS_IPAD) 
    { 
     aFrame = CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT); 
    } 

    _webView = [[UIWebView alloc] initWithFrame:aFrame]; 
    [_webView setOpaque:NO]; 
    [_webView setDelegate:self]; 
    [_webView setScalesPageToFit:YES]; 

    self.view = _webView; 
    ... 
} 

Tôi cũng đã cố gắng tải trong viewDidAppear (ngoài viewDidLoad, viewWillAppear vv)

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [[self webView] setFrame:CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT)]; 
    [[self webView] setScalesPageToFit:YES]; 

    NSURL *webURL = [NSURL URLWithString:@"http://www.google.com"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:webURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0f]; 
    [[self webView] loadRequest:request]; 
} 

Bất kỳ khuyến nghị đánh giá cao.

enter image description here

Trả lời

3

Điều này liên tục xảy ra với tôi. Tôi đăng một câu hỏi dài, sau đó hai giây sau, tôi tìm thấy câu trả lời.

Dù sao, ai đó gửi một giải pháp cho vấn đề này ở đây: UIWebView -- load external website, programmatically set initial zoom scale, and allow user to zoom afterwards

Tuy nhiên, tôi thay đổi kịch bản để thiết lập chiều rộng với chiều rộng iPad:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString* js = 
    @"var meta = document.createElement('meta'); " 
    @"meta.setAttribute('name', 'viewport'); " 
    @"meta.setAttribute('content', 'width = 540px, initial-scale = 1.0, user-scalable = yes'); " 
    @"document.getElementsByTagName('head')[0].appendChild(meta)"; 

    [[self webView] stringByEvaluatingJavaScriptFromString: js]; 
} 

Lưu ý phần 'width = 540px , tỷ lệ ban đầu = 1.0, người dùng có thể mở rộng = có '

Tôi đã thay đổi chiều rộng thành chiều rộng và chia tỷ lệ thành 1.0.

Tôi cũng cần xử lý iPhone và vì vậy tôi sẽ thực hiện điều chỉnh cho điều đó tiếp theo. Tôi nghĩ rằng sửa chữa này chỉ có thể cần thiết cho xem hình thức iPad.

CẬP NHẬT: Câu trả lời ngắn ngủi. Nếu tôi tải bất kỳ trang nào khác, kích thước sẽ bị tắt một lần nữa. Quay lại hình vuông.

GIẢI PHÁP: Chế độ xem này sẽ chỉ cần truy cập một số trang web mà tôi đã phát triển. Do đó, tôi đã cập nhật vài trang web mà tôi cần truy cập bằng cách thêm thẻ meta vào mỗi trang. Tôi chỉ cần truy cập các trang này và vì vậy đây là giải pháp mà tôi dự định thực hiện. Điều này có nghĩa là tôi cần đặt chiều rộng khung nhìn thành 540px chỉ cho iPad bằng cách nào đó. Tôi sẽ tìm ra điều đó tiếp theo.

<meta name="viewport" content="width:540, initial-scale=1, maximum-scale=1"> 
+0

Triển khai hiện tại của tôi là tôi đã viết tập lệnh python để phân tích cú pháp và tạo trang đích từ các trang nguồn dưới dạng help_ipad.html được truy cập trong chế độ xem biểu mẫu trên iPad. – Christopher

+0

Một điểm đáng chú ý: Nếu bạn không xóa chế độ xem tôi tìm thấy khi xoay ứng dụng, nó sẽ mất các thuộc tính được áp dụng. Bạn có thể xóa chế độ xem bằng cách chạy tập lệnh này trước tiên: [webView stringByEvaluatingJavaScriptFromString: @ "$ ('meta [name = viewport]'). Remove();"]; – Vlad

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