Karena saya menemukan AutoLayoutsaya menggunakannya di mana-mana, sekarang saya mencoba menggunakannya dengan file tableHeaderView.
Saya membuat subclassdari UIViewmenambahkan semua (label dll ...) yang saya inginkan dengan batasan mereka, lalu saya menambahkan ini CustomViewke UITableView' tableHeaderView.
Semuanya bekerja dengan baik kecuali UITableViewselalu menampilkan atas yang CustomView, oleh di atas saya maksud CustomViewadalah di bawah ini UITableViewsehingga tidak bisa dilihat!
Tampaknya tidak peduli apa yang saya lakukan, heightdari UITableView' tableHeaderViewadalah selalu 0 (jadi adalah lebar, x dan y).
Pertanyaan saya: apakah mungkin untuk mencapai hal ini tanpa menyetel frame secara manual ?
EDIT:
The CustomView' subviewyang saya gunakan memiliki kendala ini:
_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]]]];
Saya menggunakan pustaka praktis 'KeepLayout' karena menulis batasan secara manual membutuhkan waktu yang lama dan terlalu banyak baris untuk satu batasan tunggal tetapi metodenya menjelaskan sendiri.
Dan UITableViewmemiliki batasan ini:
_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;
Saya tidak tahu apakah saya harus mengatur beberapa batasan secara langsung CustomView, menurut saya ketinggian CustomView ditentukan oleh batasan pada UILabel"judul" di dalamnya.
EDIT 2: Setelah penyelidikan lain, tampaknya tinggi dan lebar CustomView dihitung dengan benar, tetapi bagian atas CustomView masih berada di level yang sama dengan bagian atas UITableView dan mereka bergerak bersamaan saat saya menggulir.