別のアプローチは、のviewDidLoadコールに...次のようになります。また、
であれば、 "ちらつき"
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
CGPoint offset = self.tableView.contentOffset;
CGFloat barHeight = self.searchDisplayController.searchBar.frame.size.height;
if (offset.y <= barHeight/2.0f) {
self.tableView.contentInset = UIEdgeInsetsZero;
} else {
self.tableView.contentInset = UIEdgeInsetsMake(-barHeight, 0, 0, 0);
}
self.tableView.contentOffset = offset;
}
設定内容が一部を削除することです:
self.tableView.contentInset = UIEdgeInsetsMake(-self.searchDisplayController.searchBar.frame.size.height, 0, 0, 0);
と実装endDraggingデリゲートメソッド検索バーを上部に貼り付け、didScrollをこの方法で実装します。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGRect sbFrame = self.searchDisplayController.searchBar.frame;
sbFrame.origin.y = self.tableView.contentOffset.y;
if (sbFrame.origin.y > 0) {
sbFrame.origin.y = 0;
}
self.searchDisplayController.searchBar.frame = sbFrame;
}
私は、これは
乾杯(:)を把握するために数日かかった)役立つことを願っています!
UPDATE:@carbonrが指摘したように
あなたはiOS7以降のviewDidLoadで、この行を追加する必要があります+
self.edgesForExtendedLayout = UIRectEdgeNone;
テーブルビューをどのように配置したのか説明できますか? –
私は 'wantsFullScreenLayout'をチェックアウトしたいと思います。下部にテーブルの一部を覆うバーがある場合は、フッタービューを44px高く(すばやく簡単に)追加するか、親ビューにテーブルビューをドロップすることができます。 –