2015-10-21 25 views
21

Tôi có Chế độ xem có hai nhãn và Chế độ xem bảng bên trong. Tôi muốn nhãn 1 luôn ở phía trên Bảng xem và nhãn 2 của tôi, để ở bên dưới Chế độ xem bảng. Vấn đề là xem bảng cần phải tự động kích thước ý nghĩa hoặc tăng chiều cao hoặc giảm.Đặt chiều cao của UITableView với chiều cao nội dung của nó bằng Bố cục tự động

Ngay bây giờ tôi có một hạn chế nói rằng chiều cao của Chế độ xem bảng luôn bằng 85 và @IBOutlet với giới hạn chiều cao, nơi tôi có thể thay đổi hằng số.

Tôi đoán tôi cần phải thay đổi hằng số thành chiều cao của tất cả các ô, nhưng tôi không chắc chắn như thế nào.

Menu constraints

+1

Một giải pháp khác là tạo lớp con của 'UITableView' đặt' intrinsicContentSize.height' của riêng nó thành 'contentSize.height'. Xem http://stackoverflow.com/a/17335818/77567. –

+0

@robmayoff câu trả lời là tốt hơn trong quan điểm của tôi vì nó là năng động hơn câu trả lời joern. – Altimac

Trả lời

40

Bạn cần phải ghi đè updateViewConstraints() trong UIViewController của bạn và thiết lập chiều cao hạn chế hằng số để tableView.contentSize.height:

override func updateViewConstraints() { 
    super.updateViewConstraints() 
    tableHeightConstraint.constant = tableView.contentSize.height 
} 

Sau đó, bạn phải chắc chắn rằng Label2 có một hạn chế hàng đầu mà là greaterThanOrEqual ở dưới cùng của chế độ xem bảng. Và bạn cũng phải thay đổi mức độ ưu tiên của giới hạn chiều cao của chế độ xem bảng từ Required thành High để tránh các ràng buộc xung đột khi chế độ xem của bảng là contentHeight lớn hơn chiều cao có sẵn.

+0

Tuyệt vời, cảm ơn bạn. – Dumpen

+0

Cảm ơn người đàn ông, bạn đã tiết kiệm thời gian của tôi :) – MRustamzade

+0

Thêm điều này trong viewDidLayoutSubviews, đã làm việc cho tôi. – GMHSJ

13

có một giải pháp khác. bạn có thể thêm người quan sát trên biến tableview 'contentSize'. và tự kích thước khi thay đổi trong nội dung xem bảng.

+0

Đây là một câu trả lời tuyệt vời. –

+0

Điều này là hoàn hảo. Câu trả lời hay nhất. – EmilioK

+0

bạn được chào đón :) – nova

Các vấn đề liên quan