Создание UIWebView программно
Я пробовал это некоторое время, но я не понимаю.
Я написал следующую функцию init в поддерживающем файле:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 1024,768)];
}
return self;
}
и следуя в ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
UIWebView *view = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
NSString *[email protected]"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[view loadRequest:nsrequest];
}
Я также попытался создать webview в методе didFinishLaunchingWithOptions:
appDelegate, но он также не работал.
Каков правильный путь?
Ответы
Ответ 1
Я надеюсь, что это решение поможет вам.
- Что касается вашей проблемы, просто добавьте эти строки в
- (void)viewDidLoad
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
NSString *urlString = @"https://www.google.com";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
webView loadRequest:request];
[self.view addSubview:webView];
Я использовал статический фрейм webView, вы можете использовать в соответствии с вашими требованиями.
- Но
UIWebView
устарел: сначала устарел в iOS 12.0 - больше не поддерживается; пожалуйста, примите WKWebView
, поэтому обновленный код для Objective C и Swift ниже
Swift:
import WebKit
let theConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: view.frame, configuration: theConfiguration)
let nsurl = URL(string: "https://www.google.com")
var nsrequest: URLRequest? = nil
if let nsurl = nsurl {
nsrequest = URLRequest(url: nsurl)
}
if let nsrequest = nsrequest {
webView.load(nsrequest)
}
view.addSubview(webView)
Цель C:
#import <WebKit/WKWebView.h>
#import <WebKit/WKWebViewConfiguration.h>
WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
NSURL *nsurl=[NSURL URLWithString:@"https://www.google.com"];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
[self.view addSubview:webView];
Ответ 2
Похоже, вы забыли добавить webview
в качестве подзона своего родительского представления:
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 1024,768)];
[self addSubview:webview];
}
return self;
}
Также viewDidLoad
не подходит для создания подзонов. Вы должны показать webview
как свойство вашего представления, а затем получить доступ к нему из viewDidLoad
, например:
NSString *[email protected]"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[[self.view webview] loadRequest:nsrequest];
Ответ 3
UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
webView.delegate = self;
NSString *[email protected]"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webview loadRequest:nsrequest];
[self.view addSubview:webview];
Объявить UIWebviewDelegate в интерфейсе viewcontroller
Ответ 4
Это ответ - небольшое улучшение по сравнению с ответом @Ashvin Ajadiya. Чтобы динамически установить ширину и высоту веб-представления в соответствии с вашим устройством, используйте этот код внутри viewWillAppear, иначе он не получит правильную ширину и высоту устройства.
-(void)viewWillAppear:(BOOL)animated
{
UIWebView *webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
NSString *[email protected]"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webview loadRequest:nsrequest];
[self.view addSubview:webview];
}