NSScrollViewを使用してAppleCalendarアプリ(osx)で見られる機能を少し再現しようとしています。カレンダーアプリでビューの境界を越えて上下にスクロールすると、それは単なる空白ではなく、カレンダー自体からグリッド線を延長します。私はこれがどのように行われるのか疑問に思いましたか?答えがかなり簡単になることを願っています。コンテンツビューを必要以上に大きく描画してから、スクロールビューにプロパティを設定して、スクロール可能なコンテンツと見なされるものを制限するようなものです。NSScrollViewのドキュメントに目を通した後、私はまだリードを見つけていません。答えが比較的単純な場合は許してください。答えをありがとうございます。
4 に答える
0
NSScrollViewのドキュメントに記載されているとおりです。使用する:
-(void)setDocumentView:(NSView *)aView
その上にNSClipViewを設定します。これは、表示された部分よりも大きい描画されたコンテンツを保持し、表示されていない部分をスクロールします。「ココアお絵かきガイド」もご覧ください。
于 2013-01-01T15:56:24.470 に答える
0
これは、Stackoverflow の他の誰かのコードから採用されました。このコードは、テーブルの上部を越えて水平グリッドを描画します。垂直グリッドも描画するように変更できると思います。NSTableView
サブクラスに入れます:
- (void)drawGridInClipRect:(NSRect)clipRect
{
NSRect boundsToDraw = clipRect;
CGFloat yStart = 0;
if ( clipRect.origin.y < 0 ) {
while (yStart > NSMinY(boundsToDraw)) {
CGFloat yRowTop = yStart - self.rowHeight;
NSRect rowFrame = NSMakeRect(0, yRowTop, boundsToDraw.size.width, 1.0);
[[self gridColor] set];
NSRectFill(rowFrame);
yStart -= self.rowHeight;
}
}
}
于 2014-03-14T15:14:14.247 に答える
0
scrollView の背景を設定して正しい背景を描画します...動的コンテンツがないため、カレンダーの効果が重複します
于 2014-03-14T15:26:49.037 に答える
0
セミプライベート メソッドを使用して、ドキュメント ビューの外に描画できます。
- (void)drawBackgroundOverhangInRect:(NSRect)dirtyRect {
[[NSColor cyanColor] set];
NSRectFill(dirtyRect);
}
10.7 以降で利用可能
于 2015-10-06T09:50:52.560 に答える