2010-09-02 42 views
13

Trên iPad, tôi trình bày chế độ xem ở phía "chi tiết" của bộ điều khiển chế độ xem chia tách về cơ bản chỉ là một UIWebView, tải một tệp HTML trong gói ứng dụng. Ứng dụng hỗ trợ xoay và ẩn/hiển thị mặt "chính" của phần chia khi thích hợp.Xoay vòng UIWebView trên iPad

Khi UIWebView ban đầu được tải ở chế độ ngang, nội dung của nó có vẻ "có kích thước" chính xác ... nội dung cao hơn màn hình, vì vậy bạn có thể cuộn theo chiều dọc chứ không phải theo chiều ngang. (Nội dung HTML gần như tất cả văn bản được tạo kiểu bằng CSS, chỉ với một hình ảnh nhỏ ~ 300x50 ở dưới cùng.)

Nếu sau đó bạn xoay màn hình thành dọc, nội dung HTML vẫn có vẻ như có kích thước không sao - thanh cuộn dọc có mặt, nhưng không nằm ngang, như ban đầu. Quay trở lại với cảnh quan và mọi thứ vẫn còn màu đào.

Cho đến nay, rất tốt.

Bây giờ, nếu UIWebView tải ban đầu theo hướng dọc, mọi thứ cũng "có kích cỡ" chính xác (thanh cuộn dọc, không nằm ngang). Tuy nhiên, nếu bạn xoay nó thành ngang, nội dung đột nhiên nhận được một thanh cuộn ngang, bởi vì một trong các đoạn văn bản rộng hơn chiều rộng của UIWebView. (Không phải ngẫu nhiên, tôi chắc chắn, nhưng đoạn dài đó có kích thước hoàn hảo cho chiều rộng lớn hơn một chút mà UIWebView có khi nó được định hướng như hình chân dung.)

Tôi đã mong đợi rằng việc quay vòng iPad sẽ gây ra UIWebView có khung của nó được thay đổi kích thước, và khi nó được thay đổi kích cỡ, cũng thay đổi kích thước nội dung HTML của nó một cách thích hợp. (Hãy nghĩ đến việc lấy một cửa sổ trình duyệt Web và thu hẹp nó.) Tại sao điều đó không xảy ra với tôi?

Tôi muốn tránh sử dụng thuộc tính "Cân trang để phù hợp" vì văn bản co lại không xác định.

+1

đi qua cùng một vấn đề này chính xác ngày khác, nó chỉ xảy ra khi ứng dụng được khởi động ban đầu trong hướng cảnh quan và sau đó xoay thành chế độ dọc, nếu được khởi chạy ở chế độ dọc, nó sẽ tái kích thước đúng khi xoay vào chế độ xem ngang. Trong trường hợp của tôi nó là một stopper hiển thị bởi vì nội dung của tôi là một bản đồ (CloudMade) không có thanh cuộn được hiển thị và một đoạn tốt của bản đồ kết thúc lên màn hình và trung tâm của bản đồ khi nó được quét đến một Lat/Lng rõ ràng là ngoài trung tâm. Hy vọng có một số cách giải quyết! – EagleOfToledo

+0

@EagleOfToledo Chế độ xem nội dung của bạn có phải là 'UIWebView' không? –

+0

Có, nhưng trong trường hợp của tôi UIWebView chiếm toàn bộ màn hình (không có chế độ xem SplitView/DetailView). – EagleOfToledo

Trả lời

29

Chỉ cần giải quyết vấn đề của tôi với điều này bằng cách thêm HTML5 Viewport thẻ meta này:

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 

vào phần đầu của HTML của tôi, có thể là một biến thể của thẻ meta này có thể giúp đỡ?

Mặc dù sự cố của tôi đã được kích hoạt khi ứng dụng của tôi được khởi động ở chế độ ngang, trong khi ứng dụng của bạn ở chế độ dọc, nó có thể là nguyên nhân phổ biến.

Tôi cũng có một vấn đề khác vui nhộn với các WebView trong iPad và các giải pháp chung có vẻ là rằng thẻ meta:

iPad Simulator WebView/Google Maps API Issue

+0

Thú vị. Vì HTML này có thể được sử dụng trong các trình duyệt/nền tảng khác sau này, tôi không chắc chắn về việc thêm thẻ này lúc đầu. Nhưng nếu tôi đơn giản hóa nó thành 'content =" initial-scale = 1.0 "', nó sẽ khá lành tính. Cảm ơn! –

+0

Hoàn hảo. Điều này làm việc cho tôi trên cả iPad và iPhone. –

+0

Cảm ơn. Thật buồn cười khi xóa "width = device-width" đã giải quyết được sự cố của tôi. – wanghq

0

Cũng có thể để đối phó với điều này bằng cách đặt

[myWebView tải lại];

vào phương pháp shouldAutorotateToInterfaceOrientation

- nhưng nếu bạn đang ở trên một kết nối 3G này có thể được làm chậm

+1

và bạn sẽ mất tất cả trạng thái trang không được lưu vào cookie/phiên;) – tuxSlayer

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