我试图用Swift重写状态栏编程主题中的以下代码。
NSStatusBar *bar = [NSStatusBar systemStatusBar];
theItem = [bar statusItemWithLength:NSVariableStatusItemLength];
[theItem retain];
[theItem setTitle: NSLocalizedString(@"Tablet",@"")];
...到目前为止我的Swift代码:
let bar = NSStatusBar.systemStatusBar()
let sm = bar.statusItemWithLength(NSVariableStatusItemLength)
sm.title = "Tablet"
...问题是Swift中的statusItemWithLength方法不包括CGFloat,但是NSVariableStatusItemLength在Swift中被定义为CInt。我看到以下错误:
'CInt' is not convertible to 'CGFloat'Xcode中的定义:
var NSVariableStatusItemLength: CInt { get }
var NSSquareStatusItemLength: CInt { get }
class NSStatusBar : NSObject {
class func systemStatusBar() -> NSStatusBar!
func statusItemWithLength(length: CGFloat) -> NSStatusItem!
...
}我做错了什么吗?我怎么才能解决这个问题?
发布于 2014-06-03 22:56:17
对于Beta 1和2,您可以手动将NSVariableStatusItemLength从CInt转换为所需的CGFloat,如下所示:
let sm = bar.statusItemWithLength( CGFloat(NSVariableStatusItemLength) )在Beta 3中,NSVariableStatusItemLength现在是一个CGFloat,但是由于链接器错误(bug),您必须使用
-1而不是NSVariableStatusItemLength和
-2而不是NSSquareStatusItemLength
let sm = bar.statusItemWithLength( -1 )感谢苏芝和gui_dos的理解!
发布于 2014-07-09 17:48:29
作为解决办法,使用Beta 3版本,您可以直接传递Int常量。例如:
statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1) // NSVariableStatusItemLengthhttps://stackoverflow.com/questions/24024723
复制相似问题