2012-07-08 27 views
5

Tôi gặp sự cố với UIWebView của mình. Khi chế độ xem tải nó tải trong một trong hai hướng tốt, hãy điền toàn bộ trang một cách hoàn hảo, v.v.Xoay ngang chế độ xem UIWebView không điền vào chế độ xem

Tuy nhiên, nếu tôi tải nó ở chế độ dọc, sau đó xoay thiết bị mà chế độ xem web không đổ đầy sang bên phải và tôi không thể cho cuộc sống của tôi tìm ra lý do tại sao.

Đây là quan điểm của tôi đã làm phương pháp tải

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib 

    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 320, 367); 

    }else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight){ 

     self.measurementsWebView.frame = CGRectMake(0, 0, 480, 218); 
    } 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"measurements" ofType:@"png"]; 
    [measurementsWebView loadHTMLString:[NSString stringWithFormat:@"<html><body><img src=\"file://%@\"></body></html>",path] baseURL:nil]; 
    measurementsWebView.scalesPageToFit = YES; 

} 

Nếu tôi tìm trong xây dựng giao diện Tôi cố gắng để tìm thấy bảng điều khiển cho phép tôi để thiết lập mở rộng chiều rộng hoặc những gì đã bao giờ bạn gọi nó, nhưng tất cả tôi có thể thấy co phải đây la.

enter image description here

bất kỳ trợ giúp sẽ được đánh giá cao

Trả lời

1

Trong xây dựng giao diện, menu thả xuống nơi nó nói 'Layout Rectangle', nhấp vào nó và chọn 'Khung Rectangle'.

Hoặc bạn có thể ghi đè phương pháp willAnimateRotationToInterfaceOrientation: trong bộ điều khiển chế độ xem của mình và đặt tọa độ/kích thước theo cách thủ công như bạn đã thực hiện trong viewDidLoad.

+0

lạ, ngay cả khi tôi làm điều đó không thay đổi giao diện của menu ... Tôi nghĩ có lẽ tôi cần phải cài đặt lại xcode. Tôi sẽ cố gắng shouldAutototateToInterfaceOrientation bây giờ .. tuy nhiên sẽ thay đổi kích thước của khung UIView để phù hợp với chế độ xem ngang. – HurkNburkS

+0

Xin lỗi, tôi muốn viết phương thức 'willAnimateRotationToInterfaceOrientation:'. Theo cách tương tự như cách bạn đã kiểm tra hướng trong phương thức 'viewDidLoad', bạn làm như vậy ở đây và điều chỉnh khung của khung nhìn. – sooper

+0

Đối với vấn đề của bạn với trình tạo giao diện, tôi khuyên bạn nên đọc bài đăng này [ở đây] (http://stackoverflow.com/questions/9370072/xcode-4-3-not-presenting-autoresizing-panel-in-size-inspector) – sooper

4

Thay vì thiết lập các khung hình bằng tay, bạn cũng có thể thiết lập các mặt nạ tự động thay đổi kích thước như:

measurementsWebView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

mà sẽ thay đổi kích thước WebView trong trường hợp bạn không có các yếu tố khác trên màn hình (trong đó, tôi lấy nó, bạn không có, từ các giá trị bạn đã sử dụng khi thay đổi kích thước measurementsWebView). Hoặc trực tiếp từ ngòi bút như thể hiện trong hình dưới đây:

auto-resize from nib

Các mặt nạ có thể được thiết lập bằng cách nhấp vào thanh màu đỏ trong hộp gọi Autosizing về phía góc dưới bên trái.

3

viewDidLoad được chạy một lần - khi lượt xem tải.

Nếu bạn muốn điều chỉnh khung theo cách thủ công khi xoay vòng, hãy thêm mã vào để đổi kích thước khung hình trong viewDidLayoutSubviews được gọi bất cứ khi nào chế độ xem quay.

-(void)viewDidLayoutSubviews { 

    [super viewDidLayoutSubviews]; 

    self.measurementsWebView.frame = self.view.bounds; 

} 
+0

đơn giản và dễ dàng, cảm ơn vì điều này – peroija

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