[英]How can I vertically align my status bar item text?
你可以在偏移中做到这一点。 你不能这样做,因为它需要在状态项按钮栏上完成。
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
部分。 我认为需要校正像素/点。
我只是添加了这个答案,因为我很难找到一个好的答案。 基于此,我得到了灵感: 在NSAttributedString中垂直居中两种不同大小的字体
如果这种技术错了,我有兴趣知道,所以我可以解决它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.