NSBoxのborderTypeに指定するNSBorderTypeは以下の様なenumになっている。
enum {
NSNoBorder = 0,
NSLineBorder = 1,
NSBezelBorder = 2,
NSGrooveBorder = 3
};
typedef NSUInteger NSBorderType;
点線を表現したかったんだけど、素直には出来そうにない。どうやらPathをつかって地道にやる必要があるっぽいので調べて書いた。
import Cocoa
class DashedLine: NSBox {
override func drawRect(dirtyRect: NSRect) {
NSColor.lightGrayColor().set()
var path = NSBezierPath(rect: dirtyRect)
path.lineWidth = 10.0
let pattern: [CGFloat] = [5.0, 5.0]
path.setLineDash(pattern, count: 2, phase: 0.0)
path.stroke()
}
}
見ての通りview側のプロパティにアクセスしていないので個人的には違和感大有のコードなんだけど、これでグレーの点線が表現出来る。間隔の調整には、setLineDash()
に渡しているCGFloat
の配列の数値を変えれば良い。
ちなみにconstraintの制御とかが面倒臭くて最終的には使わなかった。