私は上書きしているカスタムUICollectionViewCell
を持っています。それはタイプUILabel
のnameLabel
と呼ばれるプロパティを持っています。UICollectionViewでスクロールするとUILabelのサイズが変更されます
addConstraintsWithFormat("V:[v0]-10-[v1]-10-|", views: nameLabel, userLabel)
addConstraintsWithFormat
は以下からブライアンVoongのように定義されている:私はnumberOfLines
let nameLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 3
label.sizeToFit()
return label
}()
3に名前のラベルは、次のVFL制約が適用されたframe
せずに、それを初期化して設定する設定しますUICollectionView例:ある何が起こる
extension UIView {
func addConstraintsWithFormat(format: String, views: UIView...) {
var viewsDictionary = [String: UIView]()
for (index, view) in views.enumerate() {
let key = "v\(index)"
viewsDictionary[key] = view
view.translatesAutoresizingMaskIntoConstraints = false
}
addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(format, options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary))
}
}
、私はそのnameLabel
テキストつのセルを持っていると言います制約が与えられていると、3行(3行の折り返しを行うには十分な行)でレンダリングされます。
何が起こるのですか、そのセルにスクロールして、nameLabel
が3行あると表示し、そのセルをスクロールします。そのセルまでスクロールバックすると、まったく同じUILabel
に1行が追加されました。
レンダリングするコンテンツに基づいてUILabel
サイズのフレキシブルディスプレイを維持するにはどうすればよいですか?
内のテキストを設定し、ソリューションは、 'sizeToFit'を呼び出す前にラベルのフレームを再宣言しています。 – 0yeoj
残念ながらフレームを再宣言しても動作は変わりません。 – Thalatta
'cellForItemAtIndexPath'デリゲートから、その' UILabel'の実装を示す行をいくつか投稿できますか? – 0yeoj