2010-07-23 35 views
5

Tôi đang cố gắng xây dựng một ứng dụng gốc cho tất cả các ý định và mục đích là HTML/CSS và Javascript. Tất cả đều hoạt động tốt, nhưng khi tải xuống UIWebView có sự chậm trễ trong khi DOM được điền, hình ảnh được truy xuất, v.v.Hiển thị hình nền trên UIWebView

Có cách nào để hiển thị hình nền trên UIWebView hay thứ gì đó đằng sau nó? Lý tưởng nhất điều này sẽ giống như màn hình giật gân vì vậy nó không ảnh hưởng đến trải nghiệm chuyển từ dấu gạch chéo sang ứng dụng.

Cảm ơn

Robbie

Trả lời

3

Tôi không tin rằng bạn muốn đặt UIWebView là minh bạch và hiển thị hình ảnh đằng sau nó. Thay vào đó, bạn nên có một số loại xem (có thể với một hình ảnh như bạn đề nghị, có thể với một UIIndicator và một cái nhìn bán trong suốt mà "tối" trang) mà ngồi đó cho đến khi UIWebView đã tải nội dung của nó.

Để làm điều này, đầu tiên lớp học của bạn nên đăng ký vào Nghị định thư UIWebViewDelegate:

@interface myWebView : UIViewController <UIWebViewDelegate> { 
    // variables etc 
} 

Sau đó, bạn có thể hiển thị một cái nhìn trên tải:

-(void)viewDidLoad { 
    myView.hidden = NO; 
} 

Và cuối cùng, bạn có thể ghi đè lên webViewDidFinishLoad phương pháp để ẩn nó khi nó được tải

- (void)webViewDidFinishLoad:(UIWebView *)localwebView { 
    myView.hidden = YES; 
} 
+1

Các sự kiện thích hợp có được kích hoạt cho một cái gì đó như UIWebView khi tải và hiển thị HTML và CSS không? Một cái gì đó giống như $ (document) .ready() tương đương từ jQuery? Tôi chắc chắn sẽ cung cấp cho một thử này, cảm ơn. – Robbie

+0

Có, jQuery tương đương là một so sánh tốt. – h4xxr

30

tôi đã cần phải làm như sau trong mã của tôi để có được một nền trong suốt trên UIWebViews của tôi - Tôi thường làm điều này trong các phương pháp viewDidLoad của UIViewController

self.webView.backgroundColor = [UIColor clearColor]; 
self.webView.opaque = NO; 

Tôi nghĩ bạn cũng có thể thực hiện những thay đổi đó trong Trình tạo giao diện trong thuộc tính UIWebViews.

--- chỉnh sửa ---

Và cho hình nền bạn chỉ có thể đặt một UIImageView ở đằng sau UIWebView bây giờ mà bạn đã cho nó một nền trong suốt.

+0

iOS4 cung cấp cho tất cả chế độ xem một thuộc tính mới của .backgroundXem loại bỏ nhu cầu thiết lập .backgroundColor to clearColor và sau đó đặt hình ảnh phía sau. Tuy nhiên tôi không đồng ý rằng việc thêm một hình nền (mà trang web sẽ tải dần * trên đầu * của) là cách tiếp cận đúng ở đây ... – h4xxr

+0

Vì vậy, đó chắc chắn hoạt động, tôi đã có một số vấn đề với tải từ cảnh quan khác nhau nhưng đó là một cái gì đó tôi cần phải học anyway. – Robbie

+0

Giải pháp hoàn hảo !! – iwill

1

Thêm hình ảnh để xem bộ điều khiển trong XIB hoặc để Plist của "Launch Image". Điều này sẽ hiển thị Splash Screen từ đầu. Trong khi tải các WebView trong viewDidLoad ẩn WebView

webView.hidden = YES; 

Nạp WebView với nội dung HTML như bình thường trong viewDidLoad

Khi WebView được nạp, thực hiện cập nhật xem sau đó. Tôi nghĩ rằng điều này sẽ cho phép một số thời gian cho chức năng đại biểu để hoàn thành và tiến hành cập nhật giao diện người dùng.

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    [self performSelector:@selector(updateWebView) withObject:nil afterDelay:1]; 
} 

-(void) updateWebView { 
    webView.hidden = NO; 
    self.view = webViewElement; 
    // or 
    [self.view addSubview:webViewElement]; 
} 

Tôi đã thử như trên đang hoạt động tốt mà không có Màn hình trắng.

8
webView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"senthil.jpg"]]; 
+0

Bất kỳ lý do nào không nhận được bất kỳ phiếu bầu nào? Nó làm việc tuyệt vời cho tôi. Chi tiết duy nhất là bạn phải bỏ chọn hộp kiểm "mờ" và nó hoạt động như một nét duyên dáng. –

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