4

NSScrollViewを使用してAppleCalendarアプリ(osx)で見られる機能を少し再現しようとしています。カレンダーアプリでビューの境界を越えて上下にスクロールすると、それは単なる空白ではなく、カレンダー自体からグリッド線を延長します。私はこれがどのように行われるのか疑問に思いましたか?答えがかなり簡単になることを願っています。コンテンツビューを必要以上に大きく描画してから、スクロールビューにプロパティを設定して、スクロール可能なコンテンツと見なされるものを制限するようなものです。NSScrollViewのドキュメントに目を通した後、私はまだリードを見つけていません。答えが比較的単純な場合は許してください。答えをありがとうございます。

4

4 に答える 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 に答える