0

WebView を含むカスタム ビューがあります。私のカスタムビューは独自のレイアウトを実行し、サブビューのサイズを変更するためresizeWithOldSuperviewSize:に呼び出します。resizeSubviewsWithOldSize:

私のカスタム ビューには、WebView、NSTextField、および別のカスタム ビューが含まれています。NSTextField とカスタム ビューは、ウィンドウのサイズの変更に非常にうまく反応しますが、私の WebView は元のサイズのままです。

編集: WebViewの位置は期待どおりに変更されますが、サイズは変更されないことに注意してください。

- (void)resizeSubviewsWithOldSize:(NSSize)oldSize
    {
    NSRect superBounds = self.superview.bounds;

    // ... set frames on other subviews; works fine ...

    // Move the WebView
    NSRect oldFrame = webView.frame;
    [self setNeedsDisplayInRect:oldFrame];
    NSRect newFrame = NSMakeRect(superBounds.origin.x, 55.0, superBounds.size.width, superBounds.size.height - 55.0);
    [webView setFrame:newFrame];

    // This doesn't work:
    // [[[[webView mainFrame] frameView] documentView] setNeedsDisplay:YES];

    // Neither does this:
    // [webView setNeedsDisplayInRect:newFrame];
    }

助言がありますか?

4

1 に答える 1

0

私はこれを自分で解決したかもしれません。Interface Builder の「自動レイアウト」機能をオフにしました。私は IB の自動レイアウト機能のファンではありません。コードで独自のレイアウトを作成することを好みます (アーカイブ、検索、変更、コピーなどが簡単です)。私はしばらくの間 iOS で作業してきましたが、自動レイアウトに遭遇したことはありません。

したがって、質問で引用されているコードの最後にあるコメントアウトされた行は必要ありません。フレームを設定するだけです。

于 2013-08-08T17:02:19.653 に答える