如何根据HTML内容动态更改UIWebView的高度?

时间:2012-10-11 05:47:48

标签: ios uiwebview uiwebviewdelegate

我有一个简单的笔尖,只有几个按钮和UIWebView,我想在其上显示一些HTML。我想根据HTML内容更改UIWebView中的高度。但我不能。

我的笔尖看起来像这样: My nib

我的mainViewController.h

#import <UIKit/UIKit.h>

@interface ibecViewController : UIViewController <UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webV;

@end

我使用了sizeToFit,但它不起作用。我的mainViewController.m

#import "ibecViewController.h"

@interface ibecViewController ()

@end

@implementation ibecViewController
@synthesize webV;

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *myHTML = @"<html><body><h1>Hello, world!</h1><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p></body></html>";
    [webV loadHTMLString:myHTML baseURL:nil];

    [webV sizeToFit];
}

- (void)viewDidUnload
{
    [self setWebV:nil];
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"123");
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"456");
}

@end

我的第二个问题:为什么方法webViewDidStartLoadwebViewDidFinishLoad不起作用?尽管我已经写过我的控制器符合UIWebViewDelegate。我是iOS的新手。 WebView的高度不会更改。我的应用程序看起来像这样: My app

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。在我的ibecViewController.m我写过方法

- (void)viewWillAppear:(BOOL)animated
{
    [[self webV] setDelegate:self];
}

它作为代表工作。我的方法webViewDidStartLoadwebViewDidFinishLoad也开始运作了。然后我实施了

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [webV sizeToFit];
}

答案 1 :(得分:0)

回答第一个问题:

尝试使用[webV setScalesPageToFit:YES];功能代替sizeToFit。 Html内容将自动调整为webview大小。我想这个功能只出现在更高版本的ios中。

回答第二个问题: 您必须使用表示视图控制器(ibecviewcontroller)的self对象委托webview对象,其中定义了webview。委派完成后,您可以使用委托函数。如果您是通过Xib进行的,那么您应该将webview对象(在本例中为webV)与IB中的Files Owner对象或图标相连接。

希望有所帮助..