[英]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.