如何垂直对齐我的状态栏项目文本?
How can I vertically align my status bar item text?
左边一张是Apple的日期和时间,一张是我申请的。如您所见,我的应用程序的文本显示低于 Apple 应用程序的文本。哪个看起来不漂亮。如何解决?
self.statusBarItem.image = nil
self.statusBarItem.button?.imagePosition = .NoImage
self.statusBarItem.button?.title = "Sun 5 Jun 13:35"
你可以用偏移量来做。你不能这样做,因为它需要在状态项按钮栏上完成。
button.frame = CGRectMake(0.0, 0.5, button.frame.width, button.frame.height)
我想快速补充一下。虽然接受的答案确实根据问题的上下文起作用。如果您有图像,它将不起作用,因为这会移动所有内容(图像和文本)。我发现由于某种原因,图像是垂直居中的,但文本不是。
在这种情况下,您实际想要做的是设置 NSAttributedString.Key.baselineOffset
,您可以在其中导出基线值,如下所示
var displayScale: CGFloat = 1.0
let pstyle = NSMutableParagraphStyle()
pstyle.alignment = .center;
let aStr = NSAttributedString(string: str, attributes: [NSAttributedString.Key.paragraphStyle: pstyle, NSAttributedString.Key.font: font])
if let main = NSScreen.main {
displayScale = main.backingScaleFactor
if displayScale <= 0.0 {
displayScale = 1.0
}
}
let textHeight = aStr.size().height
baselineOffset = ((font.ascender - font.descender) - textHeight) / displayScale
button.attributedTitle = = NSAttributedString(string: str, attributes: [NSAttributedString.Key.paragraphStyle: pstyle, NSAttributedString.Key.baselineOffset: baselineOffset, NSAttributedString.Key.font: font])
此处的免责声明是我对 displayScale
部分并不完全确定。我推测这需要纠正 pixels/points。
我只是添加了这个答案,因为我一直在努力寻找一个好的答案。我的灵感来自于此:Center two fonts with different different sizes vertically in an NSAttributedString
如果此技术有误,我很想知道,以便我可以修复它。
左边一张是Apple的日期和时间,一张是我申请的。如您所见,我的应用程序的文本显示低于 Apple 应用程序的文本。哪个看起来不漂亮。如何解决?
self.statusBarItem.image = nil
self.statusBarItem.button?.imagePosition = .NoImage
self.statusBarItem.button?.title = "Sun 5 Jun 13:35"
你可以用偏移量来做。你不能这样做,因为它需要在状态项按钮栏上完成。
button.frame = CGRectMake(0.0, 0.5, button.frame.width, button.frame.height)
我想快速补充一下。虽然接受的答案确实根据问题的上下文起作用。如果您有图像,它将不起作用,因为这会移动所有内容(图像和文本)。我发现由于某种原因,图像是垂直居中的,但文本不是。
在这种情况下,您实际想要做的是设置 NSAttributedString.Key.baselineOffset
,您可以在其中导出基线值,如下所示
var displayScale: CGFloat = 1.0
let pstyle = NSMutableParagraphStyle()
pstyle.alignment = .center;
let aStr = NSAttributedString(string: str, attributes: [NSAttributedString.Key.paragraphStyle: pstyle, NSAttributedString.Key.font: font])
if let main = NSScreen.main {
displayScale = main.backingScaleFactor
if displayScale <= 0.0 {
displayScale = 1.0
}
}
let textHeight = aStr.size().height
baselineOffset = ((font.ascender - font.descender) - textHeight) / displayScale
button.attributedTitle = = NSAttributedString(string: str, attributes: [NSAttributedString.Key.paragraphStyle: pstyle, NSAttributedString.Key.baselineOffset: baselineOffset, NSAttributedString.Key.font: font])
此处的免责声明是我对 displayScale
部分并不完全确定。我推测这需要纠正 pixels/points。
我只是添加了这个答案,因为我一直在努力寻找一个好的答案。我的灵感来自于此:Center two fonts with different different sizes vertically in an NSAttributedString
如果此技术有误,我很想知道,以便我可以修复它。