Swift使用NSStatusBar statusItemWithLength和NSVariableStatusItemLength

 小歆歆 发布于 2023-01-11 19:12

我正在尝试从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"
...

问题是statusItemWithLengthSwift 中的方法除外,CGFloat但在Swift NSVariableStatusItemLength中定义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!
    ...
}

难道我做错了什么?我怎样才能解决这个问题?

1 个回答
  • 对于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 )
    

    感谢suzhi和gui_dos搞清楚这一点!

    2023-01-11 19:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有