0
私は、コレクションビューセルの推定高さを得るためにテキストの高さを計算したいと思います。私はcollectionViewLayout
の機能の中で次のコードを使用します。NSAttributedStringKey.fontをカスタムフォントとして宣言するにはどうすればよいですか?
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)
}
これはシステムフォントでは機能しますが、私のプロジェクトではカスタムフォントでは機能しません。問題は、estimatedFrameがシステムフォントの結果と等しくないことです。私は問題がオプションのパラメータになると思う:attributes
。カスタムフォント用にUIFont.systemFont(ofSize: 17)
のような方法はありますか?
これは、エラーがスローされます: '引数ラベル '(名前:, ofSizeを:)' を実行します利用可能なオーバーロードに一致しない 'もちろん、文字列名を自分のフォント名に変更しました。 – Caspert
はい、上記のスニペットを実装したときにのみ、フォントが正しく読み込まれます。 'Argument labels '(name :, ofSize:)のエラーがスローされます。 – Caspert
ああ、愚かです。 'size'は' ofSize'ではなくSwift 4(おそらく3)のために変更しました。 – brandonscript