Line Break ใน UILabel ควบคุมการแสดงข้อความหลายบรรทัด โดยค่าเริ่มต้น UILabel แสดง 1 บรรทัด และตัดทอนข้อความที่เกิน
วิธีที่ 1: Storyboard (Lines = 0)
- เลือก UILabel → Attribute Inspector
- หา Lines ตั้งค่าเป็น 0 (ค่าเริ่มต้นคือ 1)
- 0 = ไม่จำกัดจำนวนบรรทัด (Auto height)
วิธีที่ 2: โค้ด - ตั้ง numberOfLines = 0
override func viewDidLoad() {
super.viewDidLoad()
label.numberOfLines = 0
// ต้องมี Constraints ที่กำหนดความกว้าง และ Top/Bottom ให้ชัดเจน
}
วิธีที่ 3: โค้ด - ใส่ \n ในข้อความ
override func viewDidLoad() {
super.viewDidLoad()
label.numberOfLines = 0
label.text = "บรรทัดแรก\nบรรทัดที่สอง\nบรรทัดที่สาม"
}
Auto Layout สำคัญ
ต้องตั้ง Constraints ให้ถูกต้อง:
- Leading, Trailing, Top (หรือ Center Y)
- ไม่ต้องตั้ง Height Constraint (ถ้า numberOfLines = 0)
- ตั้ง
label.setContentCompressionResistancePriority(.required, for: .vertical)ป้องกันการบีบอัด
Line Break Mode
label.lineBreakMode = .byWordWrapping // ขึ้นบรรทัดใหม่ที่คำ (default)
label.lineBreakMode = .byCharWrapping // ขึ้นบรรทัดใหม่ที่ตัวอักษร
label.lineBreakMode = .byTruncatingTail // ตัดทอนท้ายด้วย ...
label.lineBreakMode = .byTruncatingHead // ตัดทอนหัวด้วย ...
Dynamic Height (TableView Cell)
tableView.estimatedRowHeight = 44
tableView.rowHeight = UITableView.automaticDimension
// Label ใน Cell ต้อง numberOfLines = 0 และมี Top/Bottom constraint