【swift】TTTAttributedLabelでSizetoFitとSizeThatFitsが効かなかったときの対応メモ
はじめに
今回やりたかったのは、
TTTAttributedLabelで生成したラベルにnumberoflinesを設定して高さ可変の対応したときにハマったのでメモしておきます。
解決方法
通常のUILabelだと、以下のコードみたいなかんじでいけたのですが今回はいけませんでした
// 可変な文字列をセットしたときの高さを求める let text = "コメントコメントコメントコメントコメントコメントコメントコメント" label.enabledTextCheckingTypes = NSTextCheckingType.Link.rawValue label.font = UIFont.systemFontOfSize(14) label.frame = CGRectMake(・・・) label.text = text label.numberOfLines = 0 let rect = label.sizeThatFits(CGSizeMake(widthMax, CGFLOAT_MAX)) label.frame.size = rect let height: CGFloat = rect.height
で、TTTAttributedLabelのコードをのぞいてみると、attributedTextが設定されていない場合にsizeThatFitsが期待どおりにうごかないことがなんとなくわかりました、、、
// 可変な文字列をセットしたときの高さを求める let text = "コメントコメントコメントコメントコメントコメントコメントコメント" label.enabledTextCheckingTypes = NSTextCheckingType.Link.rawValue label.font = UIFont.systemFontOfSize(14) label.frame = CGRectMake(・・・) label.text = text label.numberOfLines = 0 label.attributedText = NSMutableAttributedString(string:text as! String) // ★ここを追加!! label.frame.size = rect let height: CGFloat = rect.height
ちなみにまだちゃんと理解できていないのですが、labelのプロパティをセットする順番によって期待どおりに動くときと動かないときがありました、、、
とりあえず解決してよかった。
以上です