5

Làm thế nào để gỡ lỗi các vấn đề sau đây? Có cách nào để giải quyết vấn đề này không?Làm thế nào để gỡ lỗi bố trí với Multiline UILabel/autolayout trong phần mở rộng nội dung thông báo

Dường như có lỗi trong iOS 10.2 trở xuống khi đặt ra UILabel nhiều dòng.

Tôi có một phân lớp UIView khá đơn giản mà tôi sử dụng trong cả hai tiện ích ứng dụng và nội dung thông báo, trông như thế này:

custom UIView subclass in interface builder

Trong ứng dụng chính, tất cả mọi thứ được đặt ra tốt:

correct layout when shown in the main app

Khi được hiển thị trong tiện ích nội dung thông báo trên iOS 10.2 trở xuống, bố cục bị hỏng. Nhưng chỉ khi văn bản đủ dài để được chia thành nhiều dòng. Có vẻ như iOS không thể tính toán chiều cao chính xác của toàn bộ quan điểm:

broken layout in iOS 10.2

Tuy nhiên, vấn đề này dường như được cố định trên iOS 10,3 và mới hơn:

correct layout in iOS 10.3

Trả lời

0

tôi bắt đầu thử nghiệm với các bản xem trước, cụ thể bằng cách đặt các ràng buộc chiều cao cố định.

Hóa ra, nó không phải là nhãn (s) gây ra vấn đề với tính toán chiều cao tổng thể nhưng tỉ lệ chế (chiều rộng: chiều cao) trên quan điểm trên cùng.

Lập trình tính toán chiều cao dựa trên chiều rộng của quan điểm và thiết lập một hạn chế chiều cao cho quan điểm bị ảnh hưởng để giúp khắc phục vấn đề:

public override func updateConstraints() { 
    super.updateConstraints() 

    if #available(iOS 10.2, *) { 
     imageContainerHeightConstraint.isActive = false 
    } else { 
     // FIX: multiline label/aspect ratio/autolayout bug in iOS < 10.2 
     let ratio: CGFloat = imageContainerAspectRatioConstraint.multiplier 
     imageContainerHeightConstraint.constant = round(bounds.width/ratio) 
     imageContainerHeightConstraint.isActive = true 
    } 
} 
Các vấn đề liên quan