NSScrollView内のNSTextViewにPaddingを与える


概要

  • 文字が重なるのがちょっと窮屈のため、スクロールバー用に余白を取りたい

  • 以下がゴール

参考

コード

  • NSTextViewのカスタムクラスを作成する。
  • イメージとしては…
    • 周りに余白をとる(上下・左右がそれぞれ対象)
    • 原点を移動させる(これで非対称)
  • 10*2で20のマージンを与える
#import "MyTextView.h"

@implementation MyTextView

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

    // Drawing code here.
}

- (void)awakeFromNib {
    [super setTextContainerInset:NSMakeSize(10, 0)];
}

- (NSPoint)textContainerOrigin {
    NSPoint origin = [super textContainerOrigin];
    NSPoint newOrigin = NSMakePoint(origin.x - 10, origin.y);
    return newOrigin;
}

右側のみ間隔を開けるのに使える手法

  • 邪道かも

// スクロールバー分のマージンを確保する
NSSize textViewSize = _textView.superview.frame.size;
textViewSize.width -= 15;
[_textView setFrameSize:textViewSize];