你在使用UIWebview顯示網頁時。可能會注意到。UIWebView所支持的縮放倍率是很是有限的。而在Safari本身所支持的縮放係數比UIWebview要大得多。web
本文解釋了怎樣加大UIWebView的縮放係數。
UIWebView類沒有改動縮放係數的方法,咱們僅僅能用HTML代碼來作。markdown
Meta標籤可以設置viewport。而viewport就包括了初始化縮放係數的參數。app
META標籤例如如下所看到的:
可以使用的參數有:
minimum-scale:
贊成縮放的最小倍數。默以爲0.25,贊成值爲0-10。
maximum-scale:
執行縮放的最大倍數。默認1.6,贊成值爲0-10。
initial-scale:
當web頁被載入,還未被用戶縮放以前默認的縮放係數。默認值是本身主動依據頁面大小和可用區域計算出來的,但這個值終於會在最小倍數到最大倍數之間。
user-scalable
是否執行用戶縮放該web頁。post
width:
viewpoint的寬。默以爲980像素(iPhone)。贊成值爲200-10000 。lua
」device-width」表示設備寬度(iPhone爲320,iPad爲768)。scala
注意device width不等於用戶界面的寬度。設備寬度老是設備處於人像模式下的寬度(屏幕方向爲正向)。假設咱們想添加web頁的最大縮放係數(默認1.6),咱們僅僅需要在HTML代碼中添加META標籤。指定maximum-scale屬性就能夠。你可以直接在HTML源碼中添加META標籤。假設web頁來自internet並且沒法改動HTML源碼,你可以用Javascript代碼建立META標籤並附加到web頁的HTML代碼中。讀完剩下的內容。你就知道怎麼作了。ip
height:
viewport的高。通常是依據width計算的。
JavaScript代碼例如如下:
IncreaseZoomFactor.js:
function increaseMaxZoomFactor() {
var element = document.createElement(‘meta’);
element.name = 「viewport」;
element.content = 「maximum-scale=10」;
var head = document.getElementsByTagName(‘head’)[0];
head.appendChild(element);
}
在webViewDidFinishLoad:託付方法中,你可以把這段JS代碼加到web頁中:
-(void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *path = [[NSBundle mainBundle]pathForResource:@」IncreaseZoomFactor」 ofType:@」js」];
NSString *jsCode = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[webViewstringByEvaluatingJavaScriptFromString:jsCode];
[webView stringByEvaluatingJavaScriptFromString:@」increaseMaxZoomFactor()」];
}element
當從web載入web頁時。你需要當心,因爲不少web頁已經使用META標籤去改變了縮放係數或其它的viewport參數。假設你添加了新的META標籤,你會覆蓋這些縮放係數以及其它未參數。也就是說,假設在多個META標籤中定義同一參數。那麼最後一個定義生效。get
大部分時候這不會產生什麼問題,但某些時候例外。
好比,假設web頁定義了初始縮放係數4,因爲web頁未定義maximum-scale參數,那麼默認值1.6將限制初始縮放係數僅僅能是1.6。現在,你加大了maximum-scale,initialzoom也會加大。因爲原來的maximum-scale參數不能再限制它了。這會帶來一個嚴重的後果,你需要檢查其它參數並依據它們的值進行又一次定義(好比,你需要將initial-scale定義爲1.6以防止maximum-scale將頁面縮放得過多)。源碼