[英]Programmatically zoom a UIWebView by addressing its UIScrollView
在基於xib的視圖中,我有一個UIWebView,我需要以編程方式進行縮放。
由於UIWebView
沒有自己的縮放方法,因此我找到了Max的文章 ,該文章建議獲取UIWebViews UIScrollView
並將縮放級別發送給該對象。
因此,在我的視圖控制器的viewDidLoad
方法中,我確定UIScrollView
如下:
- (void)viewDidLoad {
// set iVars (both are IBOutlets)
iWebView.delegate = self;
iScrollView = [[iWebView subviews] objectAtIndex:0];
iScrollview.minimumZoomScale = 0.2;
iScrollview.maximumZoomScale = 4.0;
iScrollview.zoomScale = iScrollview.minimumZoomScale;
NSLog(@"webViewDidFinishLoad: Current %.3f, Min %.3f, Max %.3f",
iMapScrollView.zoomScale, iMapScrollView.minimumZoomScale, iMapScrollView.maximumZoomScale);
...
}
UIWebView(默認情況下)包含一個1000x2000px png文件。 NSLog顯示
webViewDidFinishLoad: Current 0.200, Min 0.200, Max 4.000
當我嘗試將iScrollView.zoomLevel
更新為新的縮放因子(讓我們說2.4)時,出現了麻煩 :
- (void)setPositionWithZoom:(float)xPos down:(float)yPos zoomScale:(float)mZoomScale {
iScrollView.zoomScale = mZoomScale;
NSLog(@"setPositionWithZoom: mZoomScale %.3f Current %.3f, Min %.3f, Max %.3f",
mZoomScale , iMapScrollView.zoomScale, iMapScrollView.minimumZoomScale, iMapScrollView.maximumZoomScale);
...
}
NSLog顯示:
setPositionWithZoom: mZoomScale 2.400 mCurrent 1.000 Min 1.000 Max 1.000
因此,縮放級別會重置為1,因為最小/最大縮放級別已經神秘地降至該值。
我很驚訝,有什么線索嗎?
編輯:進一步的研究使我接觸到一個從UIWindow子類調用的觸摸方法,以轉發觸摸事件(使用UIWebViews來實現用於捕獲觸摸事件的Mithins 配方的實現)。
正是在我的viewController中的此方法( myWebViewTouchesEnded
)被調用時,這些值才被清除掉。 我不知道為什么。
補丁:我應用了一個簡單的補丁來定義2個iVar,用於將最小/最大zoomScales設置回myWebViewTouchesEnded
自定義值,並且可以工作...
您是在NSLog語句中表示iScrollView而不是iMapScrollView嗎?
請注意,UIWebView確實使用zoomScale,minimumZoomScale和maximumZoomScale來處理事情。
例如:
使用scalesPageToFit加載文件時:如果文件是PDF,則min ... = 1 max ... = 32且zoomScale = 1,縮放時,zoomScale會相應更改,並且min ...和max ...保持不變。
如果文件是Excel文件,則min ... = 1 max ... =某個數字N且zoomScale = 1縮放時,zoomScale保持= 1,而max ...和min ...更改,例如,設置zoomScale = 2,並且zoomScale將等於1,最小...將等於1/2,最大...將等於N / 2
編輯:Excel文件的此問題僅在用捏手勢縮放時才適用。
嘗試這個:
for (UIScrollView *scroll in [myPDFView subviews])
{
//Set the zoom level.
[scroll setZoomScale:2.5f animated:YES];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.