Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何为自定义字体声明NSAttributedStringKey.font?_Swift - Fatal编程技术网

Swift 如何为自定义字体声明NSAttributedStringKey.font?

Swift 如何为自定义字体声明NSAttributedStringKey.font?,swift,Swift,我想计算文本的高度,以获得集合视图单元格的估计高度。我在collectionViewLayout函数中使用了以下代码 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { if let messageText = messa

我想计算文本的高度,以获得集合视图单元格的估计高度。我在
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)
}

这适用于系统字体,但不适用于项目中的自定义字体。问题是估计的帧与系统字体的结果不相等。我认为问题在于选项参数:
属性
。对于自定义字体,是否有类似于
UIFont.systemFont(of size:17)
的方法?

如果我没有看错您的问题,您需要:

UIFont(name: "yourCustomFontNameString", size: 17)
因此:


如果我没看错你的问题,你想:

UIFont(name: "yourCustomFontNameString", size: 17)
因此:


这将抛出一个错误:`Argument labels'(名称:,Of Size:)'与任何可用的重载都不匹配`当然,我将字符串名称更改为我的字体名称。是的,字体加载正确,只有在我实现上述代码段时,才会抛出
Argument labels'(名称:,Of Size:)
噢,愚蠢的我-这是一个编译错误而不是运行时错误<代码>大小不是大小的
-他们将其更改为Swift 4(可能是3)。您可能还需要强制展开它:
UIFont(名称:“yourCustomFontNameString”,大小:17)这将抛出一个错误:`Argument labels'(name:,Of size:)'与任何可用的重载都不匹配`当然,我将字符串名称更改为我的字体名称。是的,字体加载正确,只有当我实现上述代码段时,它才会抛出
Argument labels'(name:,Of size:)的错误。
噢,愚蠢的我-这是一个编译错误而不是运行时错误<代码>大小
不是大小
-他们将其更改为Swift 4(可能是3)。您可能还需要强制展开它:
UIFont(名称:“yourCustomFontNameString”,大小:17)