WKWebView不断突破约束?

时间:2015-11-12 21:42:51

标签: ios objective-c iphone autolayout

我创建了一个UIViewController,其中包含两个截然不同的部分。我需要添加headerView个实例contentViewWKWebView

由于我以编程方式创建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从未在屏幕旋转时调整大小。

Before

After

我不确定如何解决这个问题。我已经将关于约束破坏的输出日志链接here(它相当长),但它对我来说没什么用处。

有谁知道为什么我无法调整WKWebView的大小?

感谢您的时间。

编辑:当使用常规UIImageView代替WKWebView时,也会发生这种情况

1 个答案:

答案 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)]];
    }
}

我希望其他人能找到这个教学方法。