1

NSScrollView のドキュメント ビューである IKImageBrowserView があります。ユーザーがスクロールしても背景が固定されるように、背景画像 (テクスチャ) を設定するにはどうすればよいですか。

いろいろ試してみましたが、うまくいかなかったり、治りませんでした。

IKImageBrowserView と NSScrollView を透明にしようとしましたが、うまくいきません。背景が黒です。

画像ブラウザの背景レイヤーとしてテクスチャを追加してみました:

NSColor* browserBackgroundColor = [NSColor colorWithPatternImage:[NSImage imageNamed:@"linenTile"]];
CALayer *layer = [CALayer layer];
[layer setBackgroundColor:[browserBackgroundColor CGColor]];
[self.imageBrowserView setBackgroundLayer:layer];

下にスクロールすると固定されたままですが、上にスクロールすると固定されます。これは私が持っている最も近いものです。

4

3 に答える 3

2

scrollViewフルスクリーンの場合は、画像を の背景self.viewに設定してから、scrollView透明の背景を設定できます。

NSViewまたは、 の下に別の を追加してscrollView、 と同じ領域をカバーしscrollView、背景を設定することもできます。

于 2012-08-20T20:44:12.433 に答える
1

やっと正しい組み合わせになりました。

NSScrollView をサブクラス化し、drawRect にパターン イメージを描画します。

- (void)drawRect:(NSRect)rect {
    [[NSColor colorWithPatternImage:[NSImage imageNamed:@"linenTile"]] set];
    NSRectFill(rect);
}

ドキュメント ビューの背景をクリアに設定します (このような IKImageBrowserView の場合):

[self.imageBrowserView setValue:[NSColor clearColor] forKey:IKImageBrowserBackgroundColorKey];

また、スクロール ビューのインターフェイス ビルダーの [背景を描画] チェック ボックスをオフにする必要があります。または、コードで値を NO に設定します。

パターンをコンテンツとともにスクロールする場合。NSScrollView をサブクラス化せず、スクロール ビューの背景色をパターンに設定し、ドキュメント ビューの背景色をクリアに設定します。

于 2012-08-20T21:07:41.227 に答える
0

サブクラス化-drawRect:は不要で、単にbackgroundColorNSScrollView のプロパティを使用します。ドキュメントには、「この色は、ドキュメント ビューでカバーされていないコンテンツ ビュー内の領域をペイントするために使用されます」と記載されています。

scollView.backgroundColor = [[NSColor colorWithPatternImage:[NSImage imageNamed:@"linenTile"]] set];
于 2016-09-20T02:14:12.107 に答える