行数可変のUILabelを表示/非表示(トルツメ)する方法
iOSアプリにて、あるUI要素を内容やボタン操作などにより、表示したり非表示(トルツメ)にしたい時があります。縦方向で言えば、高さ固定のUI要素については、高さのNSLayoutConstraint
を設定し、それのconstant
プロパティを本来の高さまたは0に切り替えることによって、表示/非表示を切り替えることができます。
しかし、UI要素が行数可変のUILabel
の場合、中の文字列によって高さが可変のため、上記の方法が使えません。
そこで、高さ0のNSLayoutConstraint
を設定し、priority
プロパティを250または750に切り替えることによって、表示/非表示を切り替えることができます。
高さ0のNSLayoutConstraintの設定
priority
プロパティはデフォルトで250に設定しておく
class ShrinkCell: UITableViewCell {
var originalLabelBottomConstraint = CGFloat(0)
@IBOutlet weak var label: UILabel!
@IBOutlet weak var labelHeight: NSLayoutConstraint!
@IBOutlet weak var labelBottomConstraint: NSLayoutConstraint!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
originalLabelBottomConstraint = labelBottomConstraint.constant
}
func configure(hidden: Bool) {
if hidden {
// 非表示(トルツメ)
labelHeight.priority = 750 // 高さ0が優先される
labelBottomConstraint.constant = 0
} else {
// 表示
labelHeight.priority = 250 // UILabelの高さが優先される
labelBottomConstraint.constant = originalLabelBottomConstraint
}
}
}
Author And Source
この問題について(行数可変のUILabelを表示/非表示(トルツメ)する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/jibiki_h/items/4920a6f0f8702be9c29b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .