2

NSTextViewのドットボーダーを作成したいのですが、drawRect:コードは以下のとおりです

- (void)drawRect:(NSRect)dirtyRect
{
    [super drawRect:dirtyRect];

    CGFloat lineDash[2];

    lineDash[0] = 1.0;
    lineDash[1] = 1.0;

    NSBezierPath *path = [NSBezierPath bezierPathWithRect:self.bounds];
    [path setLineDash:lineDash count:2 phase:0.0];
    [path stroke];
}

私はまた、テキストと境界線の間にいくらかのマージンを与えたいと思っています、私のコードは以下にあります

[textView setTextContainerInset:NSMakeSize(0, 10.0)];
[textView setString:@"This is a testThis is a testThis is a testThis is a test"];

しかし、その結果、上部の境界線が欠落しています。これを修正する方法を誰が知っていますか? 画像

4

1 に答える 1

3

NSScrollViewの代わりにサブクラス化する必要がありNSTextViewます。そして、あなたは良いパフォーマンスをするでしょう。次のように実行できます。

NSScrollView サブクラス:

-(void)tile {
    id contentView = [self contentView];
    [super tile];
    [contentView setFrame:NSInsetRect([contentView frame], 1.0, 1.0)];
}

-(void)drawRect:(NSRect)dirtyRect {
    CGFloat lineDash[2];

    lineDash[0] = 1.5;
    lineDash[1] = 1.5;

    NSBezierPath *path = [NSBezierPath bezierPathWithRect:self.bounds];
    [path setLineDash:lineDash count:2 phase:0.0];
    [path setLineWidth:2];
    [path stroke];
}

結果:

スクリーンショット画像

于 2012-12-18T21:59:39.877 に答える