NSAttributedString size () метод возвращает неправильную ширину - PullRequest
0 голосов
/ 17 ноября 2018

Я создал собственный подкласс NSButtonCell, который позволяет настраивать отступы между содержимым кнопки. В моей реализации (полный исходный код можно найти на GitHub ), я переопределяю titleRect (forBounds:) , чтобы расположить заголовок кнопки:

var titleSize: NSSize {
    return NSSize(width: ceil(attributedTitle.size().width),
                  height: ceil(attributedTitle.size().height))
}

override func titleRect(forBounds rect: NSRect) -> NSRect {
    return CGRect(x: paddingLeft,
                  y: rect.height / 2 - titleSize.height / 2,
                  width: titleSize.width,
                  height: titleSize.height)
}

Результат выглядит не очень хорошо:

enter image description here

Чтобы получить желаемый результат, я должен добавить дополнительный отступ к ширине: enter image description here

Я также пытался использовать boundingRect (с: options: context:) , чтобы получить размер, но я получил те же результаты.

1 Ответ

0 голосов
/ 17 ноября 2018

Для дальнейшего использования: я разобрался с проблемой. При использовании attributedTitle важно указать шрифт кнопки, чтобы attributedString.size() мог правильно рассчитать необходимую ширину. Я предположил, что по умолчанию вычисления основаны на шрифте по умолчанию для NSButton, но, видимо, это было неправильно. См. Мой коммит для более подробной информации.

...