可以作爲WebView
的框架裝載委託登記,並在頁面加載時,你可以問主框架的文檔視圖,其規模和調整WebView
。確保關閉框架上的滾動條,否則會出現問題。
請注意,某些頁面可能非常大,當我測試daringfireball.net時,它以17612點的高度顯示,這顯然太大而無法在屏幕上顯示。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
//set ourselves as the frame load delegate so we know when the window loads
[webView setFrameLoadDelegate:self];
//turn off scrollbars in the frame
[[[webView mainFrame] frameView] setAllowsScrolling:NO];
//load the page
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://daringfireball.net"]];
[[webView mainFrame] loadRequest:request];
}
//called when the frame finishes loading
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)webFrame
{
if([webFrame isEqual:[webView mainFrame]])
{
//get the rect for the rendered frame
NSRect webFrameRect = [[[webFrame frameView] documentView] frame];
//get the rect of the current webview
NSRect webViewRect = [webView frame];
//calculate the new frame
NSRect newWebViewRect = NSMakeRect(webViewRect.origin.x,
webViewRect.origin.y - (NSHeight(webFrameRect) - NSHeight(webViewRect)),
NSWidth(webViewRect),
NSHeight(webFrameRect));
//set the frame
[webView setFrame:newWebViewRect];
//NSLog(@"The dimensions of the page are: %@",NSStringFromRect(webFrameRect));
}
}
Thanx Rob ...我已經實現了它,它工作正常..但有一個問題:它總是設置最高的webview,我得到不同的內容的高度..即。如果高度是1029.0,現在它應該是339.0,那麼它是在末尾追加空格,並顯示高度的web視圖1029.0 – Miraaj 2010-04-21 07:16:10
Rob現在解決了問題。在設置其內容之前,我現在將web視圖的大小調整爲某些默認值和較小的值。 ..說,(15.0,0.0,560.0,10.0)..我必須說羅布巖! – Miraaj 2010-04-21 10:29:04
當我在WebView中的某些交互過程中更改DOM時,會觸發更改其可見區域的尺寸,此方法「webView:didFinishLoadForFrame」將不會再次調用,是true?在這種情況下是否會有一些代表被調用?順便說一句:你的解決方案不適合我。也許你可以幫忙[這裏](http://stackoverflow.com/q/21992854/1146700)? – beipawel 2014-02-24 16:20:45