내가 AutoLayout
어디서나 그것을 사용한다는 것을 알았 기 때문에 이제는 tableHeaderView
.
내가 만든 subclass
의 UIView
(라벨 등) 그때 나는이 추가, 자신의 제약 원 추가 모든 CustomView
받는 UITableView
' tableHeaderView
.
모든이를 제외하고 잘 작동 UITableView
항상 표시 위에CustomView
에 의해 위의 나는 의미 CustomView
입니다 아래UITableView
이 볼 수 없도록!
내가 무엇을하든 ' height
of the 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의 상단과 동일한 수준이며 스크롤 할 때 함께 이동합니다.