2

2 つの NSPopovers があり、どちらもまったく同じように設定されています (IB からカスタム NSView をリンクするだけです)。どちらも問題なくポップアップしますが、コンテンツが約 20px ずれているように見えます。

この NSPopover は (適切に) コンテンツをパディングしていません...

パディングなし

しかし、これはライド側から約20pxを追加します.

パディング

IB でレイアウトされた 2 つのビューを次に示します。

ここに画像の説明を入力

ご覧のとおり、検索バーは左側と同じように右側にピン留めする必要がありますが、何らかの理由でそうではありません。最初は制約の問題だと思っていましたが、しばらくいじってみると、そうではないことがわかりました。

何か手がかりはありますか?

編集:ビューをサブクラス化し、その四角形を埋めることに決めましたが、非常に奇妙な結果が得られました! ビューがオフセットされているように見えます。これがなぜなのかはわかりません...

ここに画像の説明を入力 ここに画像の説明を入力

4

3 に答える 3

0

コンテンツ ビューへのアウトレットがある場合は、次の方法で強制的に配置できるはずです。

[contentView setFrame:[[contentView superview]bounds]];

またはもっと現代的に私は推測します...

contentView.frame = contentView.superview.bounds;
于 2013-05-14T16:57:30.920 に答える
-1

問題は解決しましたが、なぜ解決する必要があったのかはまだ正確にはわかりません。NSPopovers コンテンツ ビュー (または少なくとも私のもの) には、X: 13、Y: 13 の起点が必要です。何らかの理由で、私のビューの 1 つだけがこの値を取得していました。

これを解決するために、NSView をサブクラス化し、setFrame メソッドをオーバーライドして、x と y を常に 13、13 に強制しました。

-(void)setFrame:(NSRect)frameRect {
    [super setFrame:NSMakeRect(13, 13, frameRect.size.width, frameRect.size.height)];
}
于 2013-05-14T17:09:49.497 に答える