1

headerView押すと展開したり折りたたんだりできる があります。デフォルトの状態は折りたたまれています。

次のコードを使用して展開しheaderViewます。

if (!self.headerViewIsExpanded) {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [self.collapsedHeaderView removeFromSuperview];
    self.headerView.frame = self.expandedHeaderView.frame;
    [self.headerView addSubview:self.expandedHeaderView];

    self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y + offset, self.tableView.frame.size.width, self.tableView.frame.size.height - offset);

    [UIView commitAnimations];
    self.headerViewIsExpanded = YES;
}

ビュー フレームを正しく拡大し、tableView フレームを縮小します。ただし、元の UIControl のタッチ受信領域を展開することはできないため、元のフレームがあった場所を押すことによってのみ折りたたむことができます。

この問題を解決するにはどうすればよいですか?

編集:または、問題を解決できない理由、または少なくとも問題を安全に解決できない理由を説明した回答を受け入れます。

編集1:より明確にするために、これはヘッダービューheaderViewではありません。tableViewたまたま呼び出されたのは、テーブルの上にある単なるビューですheaderViewheaderViewとは両方とも、使用可能なウィンドウにまたがるtableViewメインのサブビューです。UIView

4

1 に答える 1

0

layoutSubviewsメソッドのオーバーロードを試みることができます。内部では、headerView に setFrame メソッドを使用して、すべてのビュー要素の位置を定義する必要があります。

于 2012-03-01T20:35:10.330 に答える