1

y 境界が 0 (またはそれを超える - 値) に達したときに、テーブル ビューの上にある検索バーをロックしたかった

スクロールビューデリゲートメソッドを試してみましたが、実際には何も変わりませんでした。実際、検索バーのフレームは変更されましたが、デフォルトのまま動作しました。

何か案は?

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
   UISearchBar *searchBar = self.searchDisplayController.searchBar;
   CGRect rect = searchBar.frame;
   rect.origin.y = MAX(0, scrollView.contentOffset.y);

   self.searchDisplayController.searchBar.frame = CGRectMake(0,MAX(0,scrollView.contentOffset.y),320,44);
}
4

2 に答える 2

1

viewdidload メソッドでは、テーブル ビューをオフセットする必要があります。

self.tableView.contentOffset = CGPointMake(0.0, 44.0);

次に、IB で UINavigation コントローラーの UITableview の上に検索バーをドラッグするか、プログラムで追加します。

于 2012-10-08T02:37:58.583 に答える
0

setNeedsLayoutiOS 6.0 以降で実行している場合は、呼び出す必要があります。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
   UISearchBar *searchBar = self.searchDisplayController.searchBar;
   CGRect rect = searchBar.frame;
   rect.origin.y = MAX(0, scrollView.contentOffset.y);
   [scrollView setNeedsLayout];                  // <-- Call setNeedsLayout here.
   self.searchDisplayController.searchBar.frame = CGRectMake(0,MAX(0,scrollView.contentOffset.y),320,44);
}
于 2013-04-22T15:00:46.560 に答える