ตั้งแต่ฉันค้นพบว่าAutoLayout
ฉันใช้มันทุกที่ตอนนี้ฉันกำลังพยายามใช้กับไฟล์tableHeaderView
.
ฉันทำsubclass
ของUIView
ทุกอย่างที่เพิ่ม (ป้าย ฯลฯ ... ) ผมอยากมีข้อ จำกัด ของพวกเขาแล้วฉันเพิ่มนี้CustomView
ไป'UITableView
tableHeaderView
ทุกอย่างทำงานได้ดียกเว้นUITableView
เสมอแสดงข้างต้นCustomView
โดยข้างต้นผมหมายถึงCustomView
คือภายใต้UITableView
ดังนั้นจึงไม่สามารถมองเห็นได้!
ดูเหมือนว่าไม่ว่าฉันจะทำอะไรค่าheight
ของUITableView
' tableHeaderView
จะเป็น0 เสมอ (ดังนั้นคือความกว้าง x และ y)
คำถามของฉัน: มันเป็นไปได้ที่ทุกคนจะบรรลุนี้โดยไม่ต้องตั้งกรอบด้วยตนเอง ?
แก้ไข:CustomView
' subview
ที่ฉันใช้มีข้อ จำกัด เหล่านี้:
_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]]]];
ฉันใช้ไลบรารี 'KeepLayout' ที่มีประโยชน์เนื่องจากข้อ จำกัด ในการเขียนด้วยตนเองใช้เวลาตลอดไปและหลายบรรทัดเกินไปสำหรับข้อ จำกัด เดียว แต่วิธีการนั้นอธิบายได้ด้วยตนเอง
และUITableView
มีข้อ จำกัด เหล่านี้:
_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;
ฉันไม่รู้ว่าฉันต้องกำหนดข้อ จำกัด บางอย่างโดยตรงCustomView
หรือไม่ฉันคิดว่าความสูงของ CustomView ถูกกำหนดโดยข้อ จำกัด ของUILabel
"ชื่อ" ที่อยู่ในนั้น
แก้ไข 2:หลังจากการตรวจสอบอีกครั้งดูเหมือนว่าความสูงและความกว้างของ CustomView จะได้รับการคำนวณอย่างถูกต้อง แต่ด้านบนของ CustomView ยังคงอยู่ในระดับเดียวกันกับด้านบนของ UITableView และจะเคลื่อนเข้าหากันเมื่อฉันเลื่อน