LiM*_*Mar 1 macos graphics cocoa objective-c
正如标题所说,setLineDash应用于我NSBezierPath并没有改变描边线.完全没有效果.
我希望它让我的线破灭.请参见图片上的两条垂直红线.
码:
NSBezierPath* p= [NSBezierPath bezierPath];
CGFloat x = r.origin.x + r.size.width/2;
float dash_pattern[]={15.,15.};
NSInteger count = sizeof(dash_pattern)/sizeof(dash_pattern[0]);
[p setLineDash:(CGFloat*)dash_pattern count:count phase:0.]; // no effect ?
[p moveToPoint:NSMakePoint(x, r.origin.y+r.size.height)];
[p lineToPoint:NSMakePoint(x, [view bounds].origin.y+[view bounds].size.height)];
[[NSColor redColor]set];
[p stroke];
Run Code Online (Sandbox Code Playgroud)

这在黑暗中有点像,但在64位OS X上,CGFloat是一个double而不是一个float.因此,您应该将数组定义为
CGFloat dash_pattern[]={15.,15.};
Run Code Online (Sandbox Code Playgroud)
这也使得显式转换成setLineDash:(CGFloat*)dash_pattern不必要的.