首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UISearchController.searchBar as tableHeaderView在下拉时导致UITableView顶部出现空白UIView

UISearchController.searchBar as tableHeaderView是将UISearchController的搜索栏作为UITableView的表头视图。当下拉UITableView时,会导致UITableView顶部出现空白UIView。

这个问题通常是由于UITableView的contentInset属性设置不正确导致的。contentInset属性用于设置UITableView的内容边距,包括顶部、底部、左侧和右侧的边距。

解决这个问题的方法是调整UITableView的contentInset属性,使其适应搜索栏的高度。可以通过以下步骤来解决:

  1. 在UITableView的初始化代码中,将contentInset属性的top值设置为搜索栏的高度。可以使用UISearchBar的frame属性来获取搜索栏的高度。
  2. 在UITableView的滚动代理方法scrollViewDidScroll(_:)中,检查UITableView的contentOffset属性。当contentOffset的y值小于等于搜索栏的高度时,将contentInset的top值设置为搜索栏的高度减去contentOffset的y值。

下面是一个示例代码:

代码语言:txt
复制
// 在UITableView的初始化代码中
let searchBar = UISearchBar()
let searchController = UISearchController(searchResultsController: nil)
searchBar.sizeToFit()
tableView.tableHeaderView = searchController.searchBar
tableView.contentInset = UIEdgeInsets(top: searchBar.frame.height, left: 0, bottom: 0, right: 0)

// 在UITableView的滚动代理方法中
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y <= -searchBar.frame.height {
        tableView.contentInset = UIEdgeInsets(top: searchBar.frame.height - scrollView.contentOffset.y, left: 0, bottom: 0, right: 0)
    }
}

这样,当下拉UITableView时,UITableView的顶部就不会出现空白UIView了。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/umeng_push)、腾讯云对象存储(https://cloud.tencent.com/product/cos)、腾讯云区块链服务(https://cloud.tencent.com/product/tbaas)。

请注意,以上答案仅供参考,具体实现可能因具体情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS头部渐变的表格视图设计 原

iOS头部渐变的表格视图设计         今天再来给大家带来一个开发中常用到的视图控制器,很多应用中,可能都会遇到这样的一个需求:表视图控制器最上方有一个头图控件,当表格视图滑动顶部,导航栏透明...,当表格视图逐渐向下滑动,导航栏渐渐出现,并且滑动期间,头图会展示相关的渐变动画效果。...这个视图控制器创建出带缩放头图效果的视图控制器  *  tip:  *      1.这个视图控制器如果是被导航push出来的 则内部会使用假导航进行渐隐模拟  *      2.这个视图控制器如果是被present出来的 则不会出现假导航栏...,strong)UIView * tableHeaderView; /**  *  设置动画头图高度  *  *  这个属性如果不设置或者设置为0 则默认会使用设置的image图片比例  *  */ @...      设计这个控件,我主要考虑两个需要优化的地方,第一是这个控制器不同的场景下可能会有不同的结构,例如在导航结构中被push出来或者通过模态跳转被present出来,我在这个控件的实现时做了兼容

1.2K20

【IOS开发基础系列】Table View开发专题

. 2.2.5 IOS7以后UItableview默认顶部空白 解决方法:         在当前VC中设置:         self.edgesForExtendedLayout = UIRectEdgeNone...- (void) setExtraCellLineHidden: (UITableView *)tableView{     UIView *view = [[UIView alloc] init];...因此cell不可见,可以将其缓存起来,而在需要继续使用它即可。...做到前几点后,你的table view滚动应该足够流畅了,不过你仍可能让用户感到不爽。常见的现象就是更新数据,整个界面卡住不动,完全不响应用户请求。...例如每次载入50条信息,那就可以滚动到倒数第10条以内,加载更多信息: - (void) tableView: (UITableView *)tableView willDisplayCell: (

30620

【iOS7一些总结】9、与列表显示():列表显示UITableView

列表显示,顾名思义它是一个列表视图的形式显示屏幕上的数据的内容。于ios列表视图UITableView达到。这个类实际应用中频繁,是很easy理解。...UITableView定义头文件UITableView.h中,详细的定义能够查看官方文档;从定义中能够看出,UITableView继承自UIScrollView类,因此支持方便地显示列表数据的同一候...须要能够创建自己定义视图加入到表头和表尾。...定义例如以下: @property(nonatomic, retain) UIView *tableHeaderView; @property(nonatomic, retain) UIView *tableFooterView...新生成的ViewController.m文件里重写loadView方法,新建一个UITableView视图。 (别忘了把alloc的视图dealloc函数中释放。)

1.9K40

iOS中表视图(UITableView)使用详解

通过这个属性,可以手动设置分割线的位置偏移,比如你向让tableView的分割线只显示右半边,可以如下设置: UITableView * tab = [[UITableView alloc]initWithFrame...的顶部         UITableViewScrollPositionMiddle,//定位完成后,将定位的行显示tableView的中间        UITableViewScrollPositionBottom...NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath; 了解了上面几个函数,我们来看什么是操作刷新块: 当我们调用的上面的函数,...五、tableView的编辑操作 设置是否是编辑状态(编辑状态下的cell左边会出现一个减号,点击右边会划出删除按钮) @property (nonatomic, getter=isEditing) BOOL...设置tableView头视图 @property (nonatomic, retain) UIView *tableHeaderView;   设置tableView尾视图 @property (nonatomic

1.3K30

iOS实例——滑动列表展现隐藏顶部视图

引 项目中需要一个效果:下滚列表顶部的自定义视图不移动,上移时隐藏顶部视图,提高列表的展现范围。...,就必须获知列表的滚动效果,这里我们自定义的顶部视图类中加一个UIScrollView属性,初始化的时候就将我们的列表赋给这个属性(UITableView是UIScrollView的子类):...这里我们利用UIView的一个Delegate:willMoveToSuperview:,它会在我们的视图被添加到父视图上被调用,在这个代理方法中我们就添加对列表的contentoffset值的观察,...每次这个值变化时就调用处理方法: #pragma mark - UIView Delegate // 在被添加到界面上就添加对contentoffset的观察 - (void)willMoveToSuperview...处理方法中我们要做两件事,第一件事是让顶部视图的高度随着列表移动而移动,但是要控制列表最高移动到的位置TOP和最低移动到的位置BOTTOM,这其实就是顶部视图的低端对应的Y值。

1.8K10

iOS开发笔记(八)---- 键盘、静态库、动画、Crash定位

附: iOS 11还有另外的键盘表现异常:APP中呼起键盘,把APP切入后台,系统桌面下滑呼起系统搜索的键盘,会导致APP内的键盘收起。...Xcode设置 UITableView下拉刷新导致的动画异常 功能背景: UITableView用于展示内容,scrollView上会添加一个RefreshHeadrView,用于实现下拉刷新。...下拉刷新结束的代码如下: [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:...奥斯丁的解决方案让我确定到问题一定是出现在当前runloop做的一些操作,导致了UITableViewCell上的视图位移。...crash问题在各个iOS版本均有出现,每天的crash率(crash次数/用户数)万分之1.5左右。

1.2K90

六天完成一个简单iOS App - 第六天

heardTitle的设置可以代理方法中直接返回内容 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(...NSInteger)section 但是为了能够使heardView更加丰富,可以直接返回UIview -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection...当做载体,heardView上添加UIViewUIView添加cell,此时cell的setFrame不会对UIView产生任何影响。...= CGAffineTransformIdentity; 当六个button全部恢复完成的时候将self.time取消 [self.time invalidate]; 点击状态栏返回tableView顶部实现...判断控件是否交叉方法 -(BOOL)intersectWithView:(UIView *)view { // 这里使用keywindow是为了防止两个控件两个不同的window中,这种情况一般不会出现

1.3K50

iOS中TableView小技巧

= [[UIView alloc] init]; 2、选中列表条目后取消选中的背景颜色 不处理的情况下,选中一行后,该行会保持被选中的背景色,一般我们不希望其保持,而是一闪而过告知用户选中过就好了...,TableView的Delegate方法中实现: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath...一般列表都会伴随着搜索框或其他输入框,我们输入时弹出键盘,但是滑动列表就表示我已经输入完毕了,不希望键盘保持界面上,而是自动收起,同样是TableView的Delegate方法中实现,但是是用的...ScrollView的方法,让搜索框之类的放弃第一响应即可: // 滑动收起搜索框的键盘 - (void)scrollViewDidScroll:(UIScrollView *)scrollView...{ [self.searchBar resignFirstResponder]; } 4、去掉NavigationController下的TableView顶部出现空白区域 iOS

94630

自定义UITableViewCell实现左滑动多菜单功能LeftSwipe

注意点: 使用UIPanGestureRecognizer手势实现左滑的时候,由于拖拽手势的方向随意性,导致与UITableViewController的下拉刷新手势冲突了!...//代理 28 29 - (void)setData: (MemberModel *)model; //设置要显示的数据 30 - (void)closeSwipe; //关闭滑动,恢复原样(用于滑动当前单元格...12 } 13 14 15 //拖动手势(拖拽手势和UITableView下拉刷新手势有冲突,造成下拉刷新不能使用) 16 - (void)pan: (UIPanGestureRecognizer...*)sender 17 { 18 //动画结束修正位置 19 if (sender.state == UIGestureRecognizerStateEnded){ 20...self.isOpenLeft) return; //还未打开左滑,不需要执行右滑 24 25 [UIView animateWithDuration:0.5 animations:^

2.4K30

iOS WKWebView+UITableView混排

WKWebView+UITableView混排 做内容展示页的时候,经常会用到WKWebView+UITableView的混排功能,现在此做一个总结,该功能的实现我采用了四种方法。...方案2: 简书的内容页实现方案 : UIWebView与UITableView的嵌套方案 将 tableView 加到 webView.scrollView 上, webView 加载的HTML最后留一个空白占位...div,用于确定 tableView 的位置,监听到webView.scrollView.contentSize变化后,不断调整tableView的位置,同时将该div的尺寸设置为tableView的尺寸...吸附力的锚点Y CGFloat attachedToAnchorY = 0; if (scrollView == self.tableView) { //顶部吸附力的...self.webView.sl_height; CGFloat tableViewHeight = self.tableView.sl_height; if (offsetY <= 0) { //顶部下拉

1.7K30

【IOS开发基础系列】下拉刷新专题

1 UIRefreshControl实现 1.1 使用范围         如果你装了xcode_4.5_developer_preview,那么UITableViewController.h文件中你会看到...遗憾的目前只看到下拉刷新功能,上拉刷新还没有,估计最终版里面苹果会考虑加入上拉刷新功能。         ...1.2.2 b)下拉刷新事件监听         当用户进行下拉刷新操作,UIRefreshControl会触发一个UIControlEventValueChanged事件,通过监听这个事件,我们就可以进行类似数据请求的操作了...,网上许多上拉、下拉库都是基于EGOTableViewPullRefresh。         ...原因:     headerView的添加方法使用错误:     self.postTableView.tableHeaderView = _refreshHeaderView;     self.postTableView.tableFooterView

17530

如何快速定位、分析、解决非Crash的BUG(iOS 11篇)

如下: ①是特意选择的区域,刚好覆盖到瀑布的顶部; ②是UIImagePickerController的返回参数,通过po命令查看; ③是按照返回参数的CropRect原图截取出来的区域; ④...(猜测是iOS 11 UIScrollView的contentInsetAdjustmentBehavior属性导致) Bug解决: 裁剪,隐藏statusBar。...PS:此BugiOS8也会出现,iOS 9/10是正常的。...只能把Bug总结为:iOS 11系统的手机某些情况下会发生系统错误,导致整个手机的动画机制出现异常。 Bug出现之后,无法通过代码修复(iOS系统错误),只能重启手机。...iOS 11 下拉刷新异常问题 功能背景: 某些页面中,存在下拉刷新/上拉加载更多的功能。 ?

2.3K50

一个多UITableview的左右滑动简单解决方案

前言 本文源自实际开发中的需求,核心的要求有几个: 1、多个UITableview要支持左右滑动; 2、点击Tab也要有UITableview的滑动切换效果; 3、每个UITableview单独的下拉刷新和上拉加载...理论上应该不至于再出现偏差的现象。但是运行之后,又出现偏移!...这时候,有的人可能会采用一种解决方案,比如在viewWillAppear的时候,把offset改回去; 或者另一种的解决方案:用UIView把UIScrollView装起来,再把UIView添加到VC.view...经过一番思考,觉得问题可能出现在rootTabBarController上。...总结 多UITableview的VC本身已经有上万行代码,散布十几个Category里面。相对于老代码的迁移,这次新增一个左右滑动功能的代码简直是微不足道。

2.7K71
领券