2015-03-11 14 views
5

Tôi mới phát triển ứng dụng iOS và tôi vừa thử sử dụng UIWebView để hiển thị trang web trên thiết bị di động trong ứng dụng của mình và không khá thành công.Làm thế nào để làm cho UIWebView của iOS hiển thị một trang web di động một cách chính xác?

Những gì tôi đã làm là chỉ một số cấu hình dự án Xcode tối thiểu và mã hóa mà tôi tìm thấy trong một số nỗ lực Googling:

  1. Tạo một dự án ứng dụng iOS mới trong Xcode sử dụng Single View Application mẫu.

  2. Kéo một Web Xem từ Object Library đến View Controller cảnh của Main.storyboard.

  3. Trong khi giữ phím Control, kéo Web Xem khỏi hiện trường View Controller cho ban biên tập ViewController.h, dẫn đến một dòng mã nguồn như thế này:

    @property (weak, nonatomic) IBOutlet UIWebView *myWebView; 
    
  4. Thêm đoạn mã sau vào ViewController .m:

    - (void)viewDidLoad { 
        [super viewDidLoad]; 
        // Do any additional setup after loading the view, typically from a nib. 
        NSURL *url = [NSURL URLWithString:@"http://www.amazon.com"]; 
        [self.myWebView loadRequest:[NSURLRequest requestWithURL:url]]; 
    } 
    

Đây là tất cả những gì tôi đã làm (và tất cả những gì mà những hướng dẫn đó nói với tôi). Sau khi tôi xây dựng và chạy ứng dụng (trên trình mô phỏng và trên thiết bị iphone thực), trang web đã tải trong chế độ xem của ứng dụng (và đã tải phiên bản di động thay vì phiên bản PC), nhưng nó hiển thị trang web như thể chế độ xem lớn hơn màn hình iphone thực tế. Đây là một Screeshot (Amazon trong trường hợp này nhưng về cơ bản giống nhau cho các trang web khác):

enter image description here

Tôi nên làm gì để làm cho iOS UIWebView hiển thị một trang web di động một cách chính xác?


Chỉ cần cố gắng gợi ý vô hiệu hóa "User Lớp Kích" tùy chọn, cho lần đầu tiên của tất cả những lời đề nghị Dipen Chudasama của, kết quả đã thay đổi một chút (từ trái-align để sắp xếp của trung tâm-align) , nhưng vẫn không phải những gì tôi đang tìm kiếm. Dưới đây là ảnh chụp màn hình:

enter image description here


EDIT:

Cảm ơn tất cả những lời đề nghị được đưa ra bởi những người bạn nhiệt tình. Tải một trang web như amazon.com trong một UIWebView phải là một nhiệm vụ khá dễ dàng như tôi hiểu, tuy nhiên, tôi đã không thành công với bất kỳ gợi ý nào. Nó sẽ là tuyệt vời nếu bất cứ ai có thể chia sẻ với tôi (thông qua Github hoặc giống nhau) chỉ là một dự án xcode mẫu (bắt đầu từ đầu với phiên bản mới nhất của chuỗi công cụ xcode) không có gì ngoài UIWebView có thể tải amazon.com một cách chính xác . Bằng cách đó tôi có thể thực hiện một dòng khác biệt và có thể tìm thấy những gì tôi đã làm sai trong dự án của riêng tôi.

+0

nơi bạn đặt khung xem web? hoặc Bạn đặt khung hình nào trong bảng phân cảnh? –

+0

@DipenChudasama Tôi đã từng thử gán 'self.view.frame' cho 'self.myWebView.frame' trong' viewdidLoad() ', nhưng kết quả là giống nhau – goodbyeera

+0

xem câu trả lời của tôi và thử nó. –

Trả lời

0

Bạn có thể mở rộng quy mô trang để phù hợp với chiều rộng màn hình với bất động sản UIWebview này webView.scalesPageToFit = YES;

Nếu không, bạn có thể chạy một lệnh js trong UIWebView để làm quy mô:

NSString *js = [NSString stringWithFormat:@"document.body.style.zoom = 0.8;"]; 
[webView stringByEvaluatingJavaScriptFromString:js]; 
+0

Đã thử điều này. Kết quả không thay đổi. – goodbyeera

+0

Đã chỉnh sửa câu trả lời của tôi bằng một phương pháp khác để thực hiện việc này. –

+0

Chỉ cần thử phương pháp js. Không làm việc. – goodbyeera

1

Các UIWebView có một tài sản gọi là "scalesPageToFit":

self.myWebView.scalesPageToFit = YES; 
self.myWebView.contentMode = UIViewContentModeScaleAspectFit; 

nên thực hiện thủ thuật.

+0

Đã thử điều này. Mặc dù không hoạt động. – goodbyeera

+0

Phiên bản Swift này? – User

0

tôi đã it..you chỉ cần đặt xem kích thước iPhone trong kịch bản thay vì kích thước bất kỳ, nghĩa là vô hiệu hóa sử dụng lớp Kích Kiểm tra hộp và nhìn thấy, điều này sẽ làm việc .. :)

enter image description here

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL *url = [NSURL URLWithString:@"http://www.amazon.com"]; 
    [self.myWebView loadRequest:[NSURLRequest requestWithURL:url]]; 
} 

Thats it, Try this one only. 

HOẶC

you have to set appropriate constraint for this. 
+0

Chỉ cần thử đề xuất này và kết quả là như nhau. – goodbyeera

+0

Tôi đã nhận được ..bạn chỉ cần đặt chế độ xem kích thước iPhone 5 trong bảng phân cảnh thay vì bất kỳ kích thước nào, có nghĩa là vô hiệu hóa Sử dụng Kích cỡ Lớp Kiểm tra hộp và xem, điều này sẽ làm việc .. :) –

+0

Cảm ơn lời khuyên của bạn. Vui lòng xem chỉnh sửa của tôi về câu hỏi gốc về kết quả của việc thử đề xuất của bạn. – goodbyeera

0

tôi đã có vấn đề tương tự như bạn @goodbye thời đại, và sau đó nhận ra tôi đã không đặt các ràng buộc AutoLayout trên UIWebView. Do đó, khi WebView tải nó quá lớn cho màn hình iphone. Bằng cách thêm các ràng buộc để phù hợp với UIWebView vào màn hình đã sửa tất cả. Hy vọng điều này có thể giúp bạn.

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