2

現時点では、アプリの動作により、ハックがウィンドウのサイズをfittingSizeに変更する、私が書いたこの追加関数を呼び出すことができます。

- (void)fitToMinimumSize
{
    NSRect frame = [self frame];
    frame.size = [[self contentView] fittingSize];
    int originalHeight = [self frame].size.height;
    int diff = originalHeight - frame.size.height;
    frame.origin.y += diff;
    [self setFrame:frame display:YES];
}

しかし、この全能のハックではなく、ウィンドウが常に contentView の最小サイズになるように、組み込みの自動レイアウト コードを使用してこの動作を自動化できますか?

編集: [[self contentView] FittingSize] を確認できることがわかりましたが、変更された場合にこれをどのように観察できますか、それとも自分でトリガーする必要がありますか?

4

1 に答える 1

1

NSConstraint通常、ウィンドウのコンテンツビューとその子に設定された'によってレイアウトが完全かつ明確に決定される場合は、すべてがすでに「自動」になっているはずです。

あなたの場合、十分に小さい寸法(おそらくゼロ)でコンテンツビューに高さと幅の制​​約をインストールしようとしますが、サブビューに設定された「コンテンツ圧縮抵抗の優先度」よりも低い優先度を使用します。すべてを正しく機能させるには、制約の優先順位を調整したり、コンテンツビューの子に追加の制約をインストールしたりする必要がある場合があります。

サブビューがゼロへの折りたたみに抵抗するように制約されている限り、これは他のコードがなくても機能するはずです。また、この場合、ウィンドウのサイズをユーザーが変更できないようにする必要があると思います。

于 2012-08-22T04:33:30.097 に答える