Swift3にて、UILabelで、複数のラベルのうち、文字列が多くて表示されないときは自動で改行させた場合に、改行されたラベルを取得する方法が知りたいです。
その改行された行が2行なのか、3行なのかなども分かれば嬉しいです。
宜しくお願い致します。
<やってみたこと>
下記のサンプルコードだと、文字数characters.countで判定していますが、
テキスト内に半角文字や記号などがランダムに含まれる場合は設定している文字数以上でも1行で表示できてしまう場合があります。
改行されたラベルを特定し、行数に応じて高さなどの変更ができればと思っています。
■ サンプルコード Swift3 xcode8
Swift3
1 var labels = [UILabel]() 2 for index in 0..<31 { 3 let label = UILabel() 4 label.font = UIFont.systemFont(ofSize: 12) 5 label.backgroundColor = rgbaPaleGray 6 label.frame = CGRect(x: 40, y: 100 + (index * 30), width: 315, height: 30) 7 label.numberOfLines = 0 8 labels.append(label) 9 scrollView.addSubview(label) 10 } 11 12 var maxY: CGFloat = 100 13 for c in labels { 14 c.frame.origin.y = maxY 15 if c.text?.characters.count > 25 { 16 c.frame.size.height += 20 17 c.frame = CGRect(x: 40, y: maxY, width: 315, height: c.frame.size.height) 18 } 19 maxY = c.frame.maxY 20 } 21
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/30 09:20
2018/01/30 13:43