好的,所以我正在尝试绘制一个虚线框,它被细分为我要放置内容的部分。这是我的代码:
NSBezierPath *path = [NSBezierPath bezierPathWithRect:dirtyRect];
[path setLineWidth:3];
CGFloat pattern[2] = {5, 5};
[path setLineDash:pattern count:2 phase:0];
CGFloat totalHeight = header.frame.origin.y - 10;
CGFloat sectionOffset = 0;
if([game getNumPlayers] == 2) {
sectionOffset = totalHeight / 2;
} else if([game getNumPlayers] == 3) {
sectionOffset = totalHeight / 3;
} else if([game getNumPlayers] == 4) {
sectionOffset = totalHeight / 4;
}
for(int i = 0; i < [[game getPlayers] count]; i++) {
[path moveToPoint:NSMakePoint(0, totalHeight - (sectionOffset * i))];
[path lineToPoint:NSMakePoint(dirtyRect.size.width, totalHeight - (sectionOffset * i))];
}
[path stroke];
这包含在我的自定义视图的 drawRect 方法中,因此dirtyRect 是一个等效于视图边界的 NSRect。变量 header 指的是 superview 中的另一个视图,我将这些线的位置作为其基础。
这是这段代码实际绘制的屏幕截图(显然标签除外):
如您所见,除非我们正在处理一种非常不幸的视觉错觉,我对此表示怀疑,否则盒子中包含的分隔线似乎比盒子的轮廓更厚。我已将路径对象的 lineWidth 明确设置为 3,所以我不确定这是为什么。我将非常感谢可以提供的任何建议。