我创建了一个UIViewController
,其中包含两个截然不同的部分。我需要添加headerView
个实例contentView
和WKWebView
。
由于我以编程方式创建WKWebView
,因此我必须以同样的方式添加约束。
以下是我添加它们的方法:
-(void)loadYoutubeVideoWithID:(NSString *)videoID {
if (![self webView]){
/* Create WebView */
WKWebView *webView = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, self.contentView.frame.size.width, self.contentView.frame.size.height)];
/* Set Delegate */
[webView setNavigationDelegate:self];
/* Set Local Property */
[self setWebView:webView];
/* Add to content view */
[self.contentView addSubview:webView];
/* Create Constraints */
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[webView]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(webView)]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[webView]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(webView)]];
}
}
尽管增加了限制,但我无法让他们受到尊重。我已根据StackExchange上的其他答案尝试了这些约束的四种不同变体,但我的WKWebView
从未在屏幕旋转时调整大小。
我不确定如何解决这个问题。我已经将关于约束破坏的输出日志链接here(它相当长),但它对我来说没什么用处。
有谁知道为什么我无法调整WKWebView
的大小?
感谢您的时间。
编辑:当使用常规UIImageView代替WKWebView时,也会发生这种情况
答案 0 :(得分:5)
解决这个问题非常简单。它要求您添加以下行:
[webView setTranslatesAutoresizingMaskIntoConstraints:NO];
初始化您希望在内容视图中调整大小的WKWebView
实例或任何其他UIView
。这是固定的例子:
-(void)loadYoutubeVideoWithID:(NSString *)videoID {
if (![self webView]){
/* Create WebView */
WKWebView *webView = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, self.contentView.frame.size.width, self.contentView.frame.size.height)];
/* Ensure Constraints remain when resizing the View */
[webView setTranslatesAutoresizingMaskIntoConstraints:NO];
/* Set Delegate */
[webView setNavigationDelegate:self];
/* Set Local Property */
[self setWebView:webView];
/* Add to content view */
[self.contentView addSubview:webView];
/* Create Constraints */
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[webView]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(webView)]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[webView]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(webView)]];
}
}
我希望其他人能找到这个教学方法。