AutoLayout
私はどこでもそれを使用していることを発見したので、今はで使用しようとしていますtableHeaderView
。
私subclass
はUIView
追加されたすべて(ラベルなど...)を作成しましたが、それらの制約を使用して、それを' に追加しCustomView
ました。UITableView
tableHeaderView
すべてがうまく以外の作品UITableView
は常にディスプレイ上のCustomView
ことで、上記の私は意味CustomView
あるの下でUITableView
それを見ることができないように!
それは私が何をすべきかに関係なく、ということらしいheight
のUITableView
" tableHeaderView
ある常に(その幅、xとyがある)0。
私の質問:フレームを手動で設定せずにこれを達成することはまったく可能ですか?
編集: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」を使用しています。これは、手動で制約を作成すると時間がかかり、1つの制約に対して行が多すぎるためですが、メソッドは自明です。
そして、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の上部と同じレベルにあり、スクロールすると一緒に移動します。