2UILabel
秒あります。lbl1
のテキストは変更できますが、lbl2
のテキストは静的です。
どちらも最初は同じ行に設定されています。を(無限大)lbl1
にnumberOfLines
設定しました。の幅がのスペースに食い込んでいる場合、 の上部を の下部に合わせて押し下げ0
たいと思います。現在の解決策がありますが、欠けている純粋な自動レイアウトの方法があると感じています。どんな助けでも素晴らしいでしょう!lbl2
lbl1
lbl1
lbl2
両方のラベルが 1 行に収まります。
lbl2
純粋な自動レイアウトでの私の試みではシフトダウンしません:
希望:
現在のソリューションは機能しますが、理想的ではありません。
import XCPlayground
import SnapKit
import UIKit
let screen: UIView = UIView(frame: CGRectMake(0,0,320,568))
XCPlaygroundPage.currentPage.liveView = screen
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
let lbl1: UILabel = UILabel()
lbl1.text = "Short Text asnoetuha 1 1 1 1 "
lbl1.numberOfLines = 0
lbl1.backgroundColor = UIColor.whiteColor()
let lbl2: UILabel = UILabel()
lbl2.text = "Amount Text"
lbl2.backgroundColor = UIColor.yellowColor().colorWithAlphaComponent(0.5)
screen.addSubview(lbl1)
screen.addSubview(lbl2)
lbl1.snp_makeConstraints { (make: ConstraintMaker) in
make.top.leading.equalTo(screen)
make.width.lessThanOrEqualTo(screen.snp_width)
}
lbl2.snp_makeConstraints { (make: ConstraintMaker) in
// Below lines feel un-ideal
let lbl2X: CGFloat = screen.frame.width - lbl2.intrinsicContentSize().width
let lbl1RightX: CGFloat = screen.frame.origin.x + lbl1.intrinsicContentSize().width
let hasOverlap: Bool = lbl1RightX >= lbl2X
make.top.equalTo(hasOverlap ? lbl1.snp_bottom : lbl1.snp_top).priorityLow()
make.trailing.equalTo(screen)
}