1

以下のようなWebビューを持つカスタムViewControllerを作成します。

@interface WebpageController : UIViewController<UIWebViewDelegate> {
    UIWebView* webView;
//....
}

そしてそれはコンストラクターです:

-(id)init {

    if (self = [super init]) {
    webView=[[UIWebView alloc]init];
    webView.delegate=self;
        webView.scalesPageToFit = YES;
        webView.multipleTouchEnabled = YES;
//.....
}

以下のwebViewにズームイン、ズームアウト、ロードHTMLStringする3つの関数があります。

//this is load HTML String function
// param: content --> HTML conten by inside <body> </body>
 -(void) loadWebViewWithContent:(NSString*) content{

    NSString * header = @"<meta name='viewport' content='width=device-width;initial-scale=1.0; user-scalable= yes;'/>";

    NSString * html = [NSString stringWithFormat:@"<html> 
                                                      <head>%@ </head> 
                                                      <body> %@ </body>
                                                   </html>",header,content];
    [webView loadHTMLString:html baseURL:nil];

}

//これらはズームインおよびズームアウト機能です

-(void) zoomIn {
    for (UIScrollView *scroll in [self.webView subviews]) {
        //Set the zoom level.
        if ([scroll respondsToSelector:@selector(setZoomScale:animated:)]) {
            NSLog(@"set ZoomScale work");

            [scroll setZoomScale:2.0f animated:YES];
            NSLog(@"zoomScale of SCROLLVIEW= %f",(scroll.zoomScale));

        }
    }

}
-(void) zoomOut {

    for (UIScrollView *scroll in [self.webView subviews]) {
        //Set the zoom level.

        if ([scroll respondsToSelector:@selector(setZoomScale:animated:)]) {

            NSLog(@"set ZoomScale work");
            [scroll setZoomScale:0.5f animated:YES];
            NSLog(@"zoomScale of SCROLLVIEW= %f",(scroll.zoomScale));

        }

    }

}

メインUIで、ユーザーがZoomInボタンをタップしたときに-> webViewzoomInをzoomIn関数(zoomOutの場合と同じ)を呼び出して設定しました。

iPhone 5.0シミュレーター(xCode 4.2を使用)でテストすると、すべて問題ありません。ピンチしてズームイン、ズームアウト(zoomIn、zoomOutボタンも使用)できます。しかし、iPhone 4.3とiPad(4.3と5.0の両方)でテストすると、--->何も起こりません->ログは次のことを示しています:

** ZoomScaleの動作を設定します

SCROLLVIEWのzoomScale=1.00; --->また別の値を設定しましたが、zoomScaleは常に=1.00->変更なし**

私のコードの何が問題になっていますか?私はとても混乱しています。助けてください。少し早いですがお礼を。

4

2 に答える 2

1

これは、スクロールビューのズーム方法用です。

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
    return contentView;
}

-(void)scrollViewDidZoom:(UIScrollView *)scrllView 
{
    CGRect rectZoom = [self centeredFrameForScrollView:scrllView andUIView:contentView]; 
    contentView.frame = rectZoom; //[self centeredFrameForScrollView:scrllView andUIView:contentView];
}

-(CGRect)centeredFrameForScrollView:(UIScrollView *)scroll andUIView:(UIView *)rView 
{
    CGSize boundsSize = scroll.bounds.size;
    CGRect frameToCenter = rView.frame;

    // center horizontally
    if (frameToCenter.size.width < boundsSize.width) 
    {
        frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
    }
    else 
    {
        frameToCenter.origin.x = 0;
    }

    // center vertically
    if (frameToCenter.size.height < boundsSize.height) 
    {
        frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
    }
    else 
    {
        frameToCenter.origin.y = 0;
    }
    frameToCenter = CGRectMake(frameToCenter.origin.x, frameToCenter.origin.y, frameToCenter.size.width, frameToCenter.size.height);
    return frameToCenter;
}

動作していない場合はお知らせください...

于 2012-08-17T14:46:25.997 に答える
0

常に self."iVar name" を使用することをお勧めします。

@interface WebpageController : UIViewController<UIWebViewDelegate>
@property (strong, nonatomic) UIWebView *webview;
@end
@implementation
  @synthesize webView;
@end

後で self.webView のように参照します。

于 2012-08-10T14:24:39.790 に答える