Как я могу объявить NSAttributedStringKey.font для пользовательского шрифта?

Caspert спросил: 13 октября 2017 в 07:02 в: swift

Я хочу вычислить высоту текста, чтобы получить приблизительную высоту для ячейки представления коллекции. Я использую следующий код внутри функции collectionViewLayout;

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {    if let messageText = messages[indexPath.row]?.text {        let size = CGSize(width: view.frame.width, height: 1000)
        let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
        let estimatedFrame = NSString(string: messageText).boundingRect(with: size, options: options, attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 17)], context: nil)
        return CGSize(width: view.frame.width, height: estimatedFrame.height + 20)
    }    return CGSize(width: view.frame.width, height: 100)
}

Это работает для системных шрифтов, но не для моего собственного шрифта внутри моего проекта. Проблема в том, что предполагаемый кадр не равен результату с системным шрифтом. Я думаю, что проблема будет в параметре параметров: attributes. Есть ли способ, подобный UIFont.systemFont(ofSize: 17) для пользовательских шрифтов?

0 ответов