Karena saya menemukan AutoLayout
saya menggunakannya di mana-mana, sekarang saya mencoba menggunakannya dengan file tableHeaderView
.
Saya membuat subclass
dari UIView
menambahkan semua (label dll ...) yang saya inginkan dengan batasan mereka, lalu saya menambahkan ini CustomView
ke UITableView
' tableHeaderView
.
Semuanya bekerja dengan baik kecuali UITableView
selalu menampilkan atas yang CustomView
, oleh di atas saya maksud CustomView
adalah di bawah ini UITableView
sehingga tidak bisa dilihat!
Tampaknya tidak peduli apa yang saya lakukan, height
dari UITableView
' tableHeaderView
adalah selalu 0 (jadi adalah lebar, x dan y).
Pertanyaan saya: apakah mungkin untuk mencapai hal ini tanpa menyetel frame secara manual ?
EDIT:
The CustomView
' subview
yang 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 UITableView
memiliki 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.