如何垂直对齐状态栏项目文本?

时间:2016-06-05 11:40:09

标签: swift macos statusbar nsbutton nsstatusitem

enter image description here

图片上的左边一个是来自Apple的日期和时间,一个是我的应用程序之一。您可能会看到我的应用程序文本显示低于Apple的文本。哪个看起来不漂亮。怎么解决这个问题?

self.statusBarItem.image                    = nil
self.statusBarItem.button?.imagePosition    = .NoImage
self.statusBarItem.button?.title            = "Sun 5 Jun  13:35"

2 个答案:

答案 0 :(得分:2)

你可以用胶印来做。你不能这样做,因为它需要在状态项按钮栏上完成。

(function($) {
  /**
   * Returns a key in the provided object that is associated with the
   * provided value.
   *
   * @param {object} object
   * @param {object} value
   *
   * @return Returns a key.
   */
  $.inObject = function(object, value) {
    var result = null;
    $.each(search, function(key, val) {
      if (value === val) {
        result = key;
        return false;
      }
    });
    return result;
  }
}(jQuery));

var arr = ["44", "003"];
var search = {
   0  : "003",
  "a" : "88",
  "b" : "44"
};

$.each(arr, function(index, value) {
  console.log($.inObject(search, value));
});

答案 1 :(得分:0)

我想对此做个快速补充。虽然接受的答案确实可以根据问题的上下文来工作。如果您有图像,它将不起作用,因为这会移动所有内容(图像和文本)。我发现由于某种原因,图像在垂直方向居中,但文本未居中。

在这种情况下,您实际想要做的是设置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部分。我认为需要校正像素/点。

我只添加了这个答案,因为我一直在努力寻找一个好的答案。我的灵感来自于此:Center two fonts with different different sizes vertically in an NSAttributedString

如果这种技术是错误的,我很想知道,所以我可以解决它。

相关问题