我正在尝试从Swift中的状态栏编程主题重写以下代码.
NSStatusBar *bar = [NSStatusBar systemStatusBar];
theItem = [bar statusItemWithLength:NSVariableStatusItemLength];
[theItem retain];
[theItem setTitle: NSLocalizedString(@"Tablet",@"")];
...
Run Code Online (Sandbox Code Playgroud)
我的Swift代码到目前为止:
let bar = NSStatusBar.systemStatusBar()
let sm = bar.statusItemWithLength(NSVariableStatusItemLength)
sm.title = "Tablet"
...
Run Code Online (Sandbox Code Playgroud)
问题是statusItemWithLength
Swift 中的方法除外,CGFloat
但在Swift NSVariableStatusItemLength
中定义CInt
.我看到以下错误:
'CInt' is not convertible to 'CGFloat'
Run Code Online (Sandbox Code Playgroud)
Xcode中的定义:
var NSVariableStatusItemLength: CInt { get }
var NSSquareStatusItemLength: CInt { get }
class NSStatusBar : NSObject {
class func systemStatusBar() -> NSStatusBar!
func statusItemWithLength(length: CGFloat) -> NSStatusItem!
...
}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?我怎样才能解决这个问题?
Ato*_*mix 27
对于Beta 1和2,您可以手动将NSVariableStatusItemLength从CInt转换为所需的CGFloat,如下所示:
let sm = bar.statusItemWithLength( CGFloat(NSVariableStatusItemLength) )
Run Code Online (Sandbox Code Playgroud)
在Beta 3中,NSVariableStatusItemLength现在是CGFloat,但由于链接器错误(bug),您必须使用
-1而不是NSVariableStatusItemLength和
-2而不是NSSquareStatusItemLength
let sm = bar.statusItemWithLength( -1 )
Run Code Online (Sandbox Code Playgroud)
感谢suzhi和gui_dos搞清楚这一点!
归档时间: |
|
查看次数: |
4185 次 |
最近记录: |