我有一个简单的笔尖,只有几个按钮和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
我的第二个问题:为什么方法webViewDidStartLoad
和webViewDidFinishLoad
不起作用?尽管我已经写过我的控制器符合UIWebViewDelegate
。我是iOS的新手。
WebView的高度不会更改。我的应用程序看起来像这样:
My app
答案 0 :(得分:1)
我找到了解决方案。在我的ibecViewController.m
我写过方法
- (void)viewWillAppear:(BOOL)animated
{
[[self webV] setDelegate:self];
}
它作为代表工作。我的方法webViewDidStartLoad
和webViewDidFinishLoad
也开始运作了。然后我实施了
- (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对象或图标相连接。
希望有所帮助..