Kể từ khi tôi phát hiện ra AutoLayout
tô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 subclass
số UIView
bổ 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ừ UITableView
luôn hiển thị trên các CustomView
, bởi ở trên tôi muốn nói CustomView
là dưới những UITableView
vì thế nó không thể nhìn thấy!
Có vẻ như bất kể tôi làm gì, height
dấ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
' subview
mà 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à UITableView
có 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.