Kể từ khi tôi phát hiện ra AutoLayouttôi sử dụng nó ở mọi nơi, bây giờ tôi đang cố gắng sử dụng nó với a tableHeaderView.
Tôi đã thực hiện một subclasssố UIViewbổ sung tất cả mọi thứ (nhãn vv ...) Tôi muốn làm việc khó khăn của họ, sau đó tôi thêm này CustomViewđến UITableView' tableHeaderView.
Mọi thứ hoạt động tốt, ngoại trừ UITableViewluôn hiển thị trên các CustomView, bởi ở trên tôi muốn nói CustomViewlà dưới những UITableViewvì thế nó không thể nhìn thấy!
Có vẻ như bất kể tôi làm gì, heightdấu UITableView' luôntableHeaderView là 0 (chiều rộng, x và y cũng vậy).
Câu hỏi của tôi: liệu có thể thực hiện được điều này mà không cần đặt khung theo cách thủ công không?
EDIT:
Các CustomView' subviewmà tôi đang sử dụng có những khó khăn này:
_title = [[UILabel alloc]init];
_title.text = @"Title";
[self addSubview:_title];
[_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview Top
[_title keep:[KeepRightInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepLeftInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepBottomInset rules:@[[KeepMin must:5]]]];
Tôi đang sử dụng một thư viện tiện dụng 'KeepLayout' vì việc viết các ràng buộc theo cách thủ công sẽ mất nhiều thời gian và quá nhiều dòng cho một ràng buộc duy nhất nhưng các phương pháp thì tự giải thích.
Và UITableViewcó những hạn chế sau:
_tableView = [[UITableView alloc]init];
_tableView.translatesAutoresizingMaskIntoConstraints = NO;
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.backgroundColor = [UIColor clearColor];
[self.view addSubview:_tableView];
[_tableView keep:[KeepTopInset rules:@[[KeepEqual must:0]]]];// These 4 constraints make the UITableView stays 0 away from the superview top left right and bottom.
[_tableView keep:[KeepLeftInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepRightInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepBottomInset rules:@[[KeepEqual must:0]]]];
_detailsView = [[CustomView alloc]init];
_tableView.tableHeaderView = _detailsView;
Tôi không biết liệu tôi có phải đặt một số ràng buộc trực tiếp trên hay không CustomView, tôi nghĩ rằng chiều cao của CustomView được xác định bởi các ràng buộc trên UILabel"tiêu đề" trong đó.
CHỈNH SỬA 2: Sau một cuộc điều tra khác, có vẻ như chiều cao và chiều rộng của CustomView đã được tính toán chính xác, nhưng phần trên cùng của CustomView vẫn ở cùng mức so với phần đầu của UITableView và chúng di chuyển cùng nhau khi tôi cuộn.