##使い方
意外と日本語の記事がなかったので?書きました。
let maxSize = CGSize(width: 100,height:100)
let size = __UIパーツ__.sizeThatFits(maxSize)
__UIパーツ__.frame = CGRect(origin: CGPoint(x:0, y: 0), size: size)
maxSizeで最大の幅と高さを指定しておきます。
その範囲内でいい感じ設定してほしいので、それをsizeThatFitsの引数として代入すると、いい感じに調整してくれたサイズが返ってきます。
この場合は width,heightがそれぞれ100以下の範囲でいい感じに値を返してくれます。
あとはそれを代入すればOK!
##具体例(UILabel) 幅を指定値以下で高さを可変
let label = UILabel()
label.numberOfLines = 0
label.text = "lorem ipsum ..........something"
//最大値の設定。 幅固定で高さはいい感じにしたい、と言う場合はこのように高さの最大値を無限大に
let maxSize = CGSize(width: self.view.frame.width - 100, height: CGFloat.greatestFiniteMagnitude)
let size = label.sizeThatFits(maxSize)
//後でcenterを設定するためCGPointのx、yはどんな値でもよき
label.frame = CGRect(origin: CGPoint(x:0, y: 0), size: size)
label.center = self.view.center
これでtextが全てすっぽり収まるけれど、大きすぎないちょうどよいUILabelサイズが計算されます。