質問: ### 前提・実現したいこと カード型タイムラインのようなUI ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/b5aa169408647aa52893be78e5134848.png) ### 発生している問題・エラーメッセージ 可変長LabelのAutoLayout設定方法がわからず、上記画像のように本文の文字が(...)と切れてしまっている。 ### 該当のソースコード 様々なサイトのソースを参考にしつつ、可変長にしたいLabel部分の制約を ・Labelの上下左右にSpace Constraint ・Labelの高さにHeight Constraint (Greater Than or Equal) を設定したのですが、変わらず。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/08de03868bf97d1dd2acf5a11995fa2b.png) ### 補足情報(言語/FW/ツール等のバージョンなど) 参考になればいいのですが、作業途中のソース全文をGitHubにあげてあります。 ### (追記1) すみません、質問してから気づいたのですがScrollViewではなくTableView + CustomCellで実装すれば上手くいくような気がしました・・・ ただもしScrollViewで上手くできる方法があれば後学のためにご教授いただけますでしょうか!
回答: ### 解決しました。 AutoLayoutだけだと出来なかったのでコードで合わせることにしました。 長い文字列をLabelにセット後、カスタムViewで以下の関数を呼び出すことで可変長LabelおよびカスタムViewのHeightがリサイズされました。 ``` private func sizeFitting() { // 重要:xibと実機のwidthが違うと、systemLayoutSizeFittingが正しく計測されないため事前にwidthを合わせる。 self.frame = CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: self.frame.height) self.setNeedsLayout() self.layoutIfNeeded() let size = self.systemLayoutSizeFitting(UILayoutFittingCompressedSize) self.frame = CGRect.init(x: 0, y: 0, width: size.width, height: size.height) } ``` GitHubに上げてありますので、同様の悩みを抱えている方の参考になれば幸いです。