Cocoa Swift&;NSBezierPath
使用我的应用程序时,我遇到了一些绘图方面的问题: 我想知道为什么回到Obj-c,Cocoa Swift&;NSBezierPath,cocoa,swift,nsbezierpath,Cocoa,Swift,Nsbezierpath,使用我的应用程序时,我遇到了一些绘图方面的问题: 我想知道为什么回到Obj-c,-moveToPoint()和-lineToPoint()可以毫无问题地绘制所有内容,而现在,使用swift,所有内容看起来都一样,只是在我的视图上出现了一个奇怪的边框。让我解释清楚: 假设你的任务是从a(0,0)到B(10,10)画一条基本线 我们都知道如何在obj-c中做到这一点,但在swift中,我有了一些新东西: var path : NSBezierPath = NSBezierPath(rect:
-moveToPoint()
和-lineToPoint()
可以毫无问题地绘制所有内容,而现在,使用swift,所有内容看起来都一样,只是在我的视图上出现了一个奇怪的边框。让我解释清楚:
假设你的任务是从a(0,0)到B(10,10)画一条基本线
我们都知道如何在obj-c中做到这一点,但在swift中,我有了一些新东西:
var path : NSBezierPath = NSBezierPath(rect: dirtyRect)
let color = NSColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
color.set()
path.moveToPoint(NSPoint(x: 0,y: 0))
path.lineToPoint(NSPoint(x: 10,y: 10))
path.lineWidth = 5.0 //Makes the line 5px width, but it even
//creates an annoying border along the view
//Try it out, i can't figure out how to get rid of it
path.stroke()
我建议,不要使用
NSBezierPath
、NSColor
和NSPoint
,而应分别使用更新的UIBezierPath
、UIColor
和CGPoint
您正在用一个rect初始化贝塞尔路径,因此当您调用path.stroke()时,rect是路径的一部分。您可以将路径初始化为NSBezierPath()。@FoxNos我看不出这会如何影响更改为swift等价物。尽管它们可能比其NS前辈更新,但UIBezierPath和UIColor不是“更新”版本。-它们是用于不同的平台的。@0x7fffffff哦,对不起,我也在学习Swift。那么这些只适用于iOS设备?@elito25没关系-正确。并不是所有的,但有相当多的以NS为前缀的OS X类在iOS上有(大致)相同的方法,并以“UI”为前缀,以将它们包含在UIKit框架中。它们不是更新的,只是根据平台的需要而变化。例如,NSColor在管理色彩空间方面有更多的功能。UIColor没有这些功能,因为iOS设备的屏幕变化要小得多,所以它不需要额外的颜色空间管理的复杂性。