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

为什么当我返回到UISearchController视图时,我的UITableView滚动偏移量会落在它的后面?

当你返回到UISearchController视图时,UITableView滚动偏移量会落在它的后面的原因是因为UISearchController视图的显示和隐藏会影响UITableView的布局和滚动。

具体来说,当UISearchController视图显示时,它会覆盖在UITableView上方,导致UITableView的内容向下移动,从而产生滚动偏移量。当你返回到UITableView时,UISearchController视图被隐藏,UITableView恢复到原始的布局,但滚动偏移量并没有被调整,导致内容偏离了正常位置。

解决这个问题的方法是在返回到UITableView时手动调整滚动偏移量,使其回到正确的位置。你可以通过在返回到UITableView的回调方法中添加如下代码实现:

代码语言:txt
复制
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // 调整滚动偏移量
    tableView.setContentOffset(CGPoint.zero, animated: false)
}

上述代码将滚动偏移量设置为CGPoint.zero,即回到最顶部的位置。这样就可以保证当你返回到UITableView时,它的滚动偏移量不会落在后面。

另外,为了避免这个问题的发生,你还可以在显示UISearchController视图之前,记录UITableView的滚动偏移量,并在返回到UITableView时将其恢复到之前的位置。这样就可以保持滚动位置的连续性。具体的实现可以参考以下代码:

代码语言:txt
复制
var previousContentOffset: CGPoint = CGPoint.zero

// 显示UISearchController视图之前记录滚动偏移量
func showSearchController() {
    previousContentOffset = tableView.contentOffset
    // 显示UISearchController视图的代码
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // 返回到UITableView时恢复滚动偏移量
    tableView.setContentOffset(previousContentOffset, animated: false)
}

上述代码通过记录和恢复滚动偏移量,可以确保返回到UITableView时滚动位置的准确性。

这是一个比较常见的问题,适用于任何使用UISearchController和UITableView结合的场景,无论是前端开发还是后端开发,都需要注意这个问题并进行相应的处理。希望以上解答对您有帮助!如果有更多关于云计算、开发工程师或其他相关问题,请随时提问。

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

相关·内容

你可能需要为你 APP 适配 iOS 11

(向上滑动后标题回到原来UI效果)、横屏状态下tab上文字和icon变为左右排列。...;iOS 11 新增属性 UINavigationController和滚动交互 滚动时候,以下交互操作都是由UINavigationController负责调动UIsearchController...值,当你viewController改变了safeAreaInsets值,有两种方式获取到回调: UIView.safeAreaInsetsDidChange() UIViewController.viewSafeAreaInsetsDidChange...UIScrollView and UITableView新特性 Scroll Views 如果有一些文本位于UI滚动视图内部,并包含在导航控制器中,现在一般navigationContollers传入一个...,当cell高度较小时,只显示image,不显示title,当cell高度够大,会同时显示image和title。

1.7K60

手把手带你撸一个网易云音乐首页(三)

如果有小伙伴是从这篇文章进入,不妨先从上一篇文章看起,这样看下来才能保证你思路连贯性。 View 回到我们项目工程中来,准备构建我们视图。...我们知道在 UICollectionView 属性中,有一个分页属性:isPagingEnabled,当设置成 true ,每次滚动位移量等于自身 frame 宽度;当不设置这个分页属性,默认值是...false, 所以滚动就不会有分页效果。...,决定了 UICollectionView 停止滚动偏移量,可以通过重写这个函数来实现自定义分页滚动,重写这个函数逻辑思路如下: 定义一个坐标点 CGPoint 来记录最新滚动偏移坐标 定义俩个值分别为...停止滚动偏移量 代码实现如下: class RowStyleLayout: UICollectionViewFlowLayout { private var lastOffset

2.3K10
  • 你可能需要为你 APP 适配 iOS11

    (向上滑动后标题回到原来UI效果)、横屏状态下tab上文字和icon变为左右排列。...用iOS11模拟器体验了一下Files这个APP竖屏和横屏,如下图所示: (command+向左箭头让模拟器横屏) 横屏,在iPhone上,tab上图标较小,tab bar较小,这样垂直空间可多放置内容...来改变safeAreaInsets值,当你viewController改变了safeAreaInsets值,有两种方式获取到回调: 三、UIScrollView and UITableView...新特性 1、 Scroll Views 如果有一些文本位于UI滚动视图内部,并包含在导航控制器中,现在一般navigationContollers传入一个contentInset给其最顶层viewController...滑动操作这里还有一个需要注意是,当cell高度较小时,只显示image,不显示title,当cell高度够大,会同时显示image和title。

    2.5K00

    你可能需要为你APP适配iOS11

    (向上滑动后标题回到原来UI效果)、横屏状态下tab上文字和icon变为左右排列。...用iOS11模拟器体验了一下Files这个APP竖屏和横屏,如下图所示: (command+向左箭头让模拟器横屏) 横屏,在iPhone上,tab上图标较小,tab bar较小,这样垂直空间可多放置内容...来改变safeAreaInsets值,当你viewController改变了safeAreaInsets值,有两种方式获取到回调: 三 UIScrollView and UITableView...新特性 Scroll Views 如果有一些文本位于UI滚动视图内部,并包含在导航控制器中,现在一般navigationContollers传入一个contentInset给其最顶层viewController...滑动操作这里还有一个需要注意是,当cell高度较小时,只显示image,不显示title,当cell高度够大,会同时显示image和title。

    82120

    RunLoop总结:RunLoop应用场景(三)滚动视图流畅性优化

    因为跟UITableView、UICollectionView等滑动优化有关,就顺便总结一下影响UITableView、UICollectionView等视图滑动流畅因素。...一点UITableView滑动性能优化扩展 影响UITableView滑动,有哪些因素呢? 关于这一点,人眼能识别的帧率是60左右,这也就是为什么,电脑屏幕最佳帧率是60Hz。...屏幕一秒钟刷新60次(屏幕在一秒钟重新渲染60次),那么每次刷新界面之间处理时间,就是1/60,也就是1/60秒。也就是说,所有导致计算、渲染耗时操作都会影响UITableView流畅。...这样在为Cell各个子控件赋值,仅仅是取值、赋值,在计算Cell高度,也仅仅是加法运算。 3.界面中背景色透明视图过多 为什么界面中背景色透明视图过多会影响UITableView流畅?...,修改视图

    2.2K41

    UITableViewCell系列之(二)视觉差滚动效果前言

    但是苦于最近很忙,零碎时间不够用,没有时间停留在文章脉络和排版上,只能把所想写文章拆开,以短篇形式拿出来。...如下是所要说视觉差滚动效果(即:滚动tableView时候,每一行图片都会根据滚动方向和滚动距离不同进行移动,给人一种图片在移动视觉体验),由于下面gif图失真卡顿严重,真实效果大家可以参考demo...用于tableView滚动,更新imageViewY坐标值 在UIScrollViewDelegatescrollViewDidScroll:方法里调用cell对象方法,更新imageView...控制器不能使UITableViewController,只能是UIViewControllerview上添加一个UITableView ---- 3. demo中涉及到了坐标系转换问题,不了解坐标系转换可以参考如下两个方法使用...: // - (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view; // 把以A视图为坐标系rect1转换为以B视图为坐标系

    6.1K30

    优雅处理网络数据,你真的吗?不如看看这篇.

    但是,当需要显示大量数据,确保平滑如丝滚动可能非常棘手。所以今天正好趁这个机会,和大家分享一下处理大量可滚动数据方面的个人经验。...首先,先和大家介绍一个概念:无限滚动,无限滚动是可以让用户连续加载内容,而无需分页。在 UI 初始化时候 App 会加载一些初始数据,然后当用户滚动快要到达显示内容底部加载更多数据。...image 如何实现 由于 Instagram UI 过于复杂,在这就不去模仿实现了,但是模仿了加载机制,同样实现了一个简单数据无限滚动和无缝加载效果。...UITableView 行数并 Reload,那我之前说 Prefetching API 在这种情况下就失去作用了,因为起作用前提是要保证预加载数据 UITableView 当前行数要小于总行数...回到我上面所说无限滚动, 其实实现起来并不难,正常情况下,我们向服务端请求大量相同类型数据时候,都会提供一个接口,称之为分页请求接口,该接口在每次数据返回时候,都会告诉客户端总共有多少页数据,

    1.4K20

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

    : [UIImage imageNamed: @"line2.png"]];  2.2.9 跟随滚动头部视图         即把headerView放在整个TableView头部视图中     _...其中特例包括背景色,alpha值应该为1(例如不要使用clearColor);图像alpha值也应该为1,或者在画图设为不透明。...解决办法可参见后面的预渲染图像。 2.4.1.4 不要做多余绘制工作。      在实现drawRect:时候,rect参数就是需要绘制区域,这个区域之外不需要进行绘制。...做到前几点后,你table view滚动应该足够流畅了,不过你仍可能让用户感到不爽。常见现象就是在更新数据,整个界面卡住不动,完全不响应用户请求。...这里面还有一个学问,当下载线程数超过2显著影响主线程性能。

    35820

    【IOS开发基础系列】UIScrollView专题

    一个滚动视图可以根据手指移动,调整原点位置。展示内容视图,根据滚动视图原点位置,开始绘制视图内容,这个原点位置就是滚动视图偏移量。...因为滚动视图没有滚动条,必须知道一个触摸信号是打算滚动还是打算跟踪里面的子视图。...假如定时器行动,没有任何位置改变,滚动视图就发送一个跟踪事件给触摸视图。如果在定时器消失前,用户拖动他们手指足够远,滚动视图取消子视图任何跟踪事件,滚动它自己。...一个滚动视图也可以控制一个视图缩放和平铺。当用户做捏合手势滚动视图调整偏移量视图比例。当手势结束时候,管理视图内容显示对象,就应该恰当升级子视图显示。...当值是 YES ,假如一开始是垂直或者是水平运动,那么接下来锁定另外一个方向滚动

    57930

    iOS学习——tableview中带编辑功能cell键盘弹出遮挡和收起问题解决

    最近在项目中经常用到UITableViewcell中带有UITextField或UITextView情况,然后在这种场景下,当我们点击屏幕较下方cell进行编辑,这时候键盘弹出来会出现遮挡待输入...翻译:你可以在任何视图或窗口上添加HUD。 然而,避免将HUD添加到具有复杂视图层次结构某些UIKit视图(如UITableView或UICollectionView)是一个好主意。...言归正传,下面就说回到我们要解决问题,在UITableViewcell中,系统自带UITableViewCell格式没有自带UITextField或UITextView这种可以编辑区域,而这种类型...,和弹出键盘相对,弹出键盘我们保存了弹出键盘之前tableviewcontentOffset偏移量,所以,在收起键盘后,我们将tableviewcontentOffset值设为弹出之前值就可以了...,回到键盘弹出之前状态了。

    3.9K80

    iOS开发中行高灵活可变UITableView性能优化

    通过上面分析,以10行数据表格视图为例,若一屏幕可以呈现7行数据(TableView需要准备8行),则在第一次展示TableView视图执行44次heightForRwoAtIndexPath方法...至于为何UITableView在进行配置也需要拉取所有的行高数据,猜想其为了进行视图一些初始化操作,例如表视图右侧滚动宽度和所占比例等。...个人更倾向将行高数据封装进cell数据模型Model中。         通过优化,可以有效减少重复高度计算,这也是原先处理此类问题主要方式。...estimatedRowHeight属性用于TableView进行初始化,其影响到表格视图右侧滚动宽度。cell展现出来时真正行高并不受这个属性值影响。        ...关于细节方面,还有一个问题需要注意,预估行高会影响到TableView右侧滚动展现,如果每个cell行高跳跃跨度十分大,滚动条宽度配置失准,随着用户滑动表视图,右侧滚动条可能会出现长短跳跃情况

    2K20

    MJRefresh源码分析 原

    二、工具类别     上面示意图中列出几个工具类别主要提供方便属性访问功能。其主要是为了方便MJRefresh库自己调用,当然你也可以对进行使用。...这两个组件是作为子视图添加在UIScrollView上,因此和UIScrollView原生头尾视图都不影响。...UIScrollView+MJRefresh类别在开发者设置mj_header和mj_footer属性,将这两个组件添加为当前滚动视图最下层子视图,为了满足某些自动加载需求,这里面有用runtime...将UITableView和UICollectionViewreload函数进行替换,这样做目的是为了在数据加载统计界面的元素个数。...:作用是返回一个值,如果?:前表达式为nil的话,则会返回?:后面的值,同样,如果?

    68510

    微信小程序仿APP section header 悬停效果

    美好心情.jpeg 很多APP都有这么一个效果,列表头在滚动到顶部时会悬停在顶部,比如在iOS开发中UITableview设置 style 属性设置为 Plain ,这个tableviewsection...1、我们需要在页面布局完成后获取到头部位置: 在onReady方法中,查询section-header节点并拿到该节点此时距离当前顶部距离 注意是 此时,这个后面再讲 /** * 页面加载完成...: 将原来header修改为如下代码,并添加一个placeholder视图,目的是当我section-header视图悬停,保持占位,避免页面抖动 <view class='{{fixed ?...swlectorQuery()<em>的</em>时候,获取到<em>的</em>top是当前调用改函数<em>时</em>相应节点对应当前顶部<em>的</em>距离,这就有一个问题,<em>当我</em>们<em>的</em>header<em>的</em>高度(不一定是header只要是section-header上面的<em>视图</em><em>的</em>高度...所以在我们改变高度之后,要再次调用该函数去获取距离"当前顶部"<em>的</em>距离,这也是要注意<em>的</em>一个点,如果<em>我</em>能直接再次获取并赋值,发现还是有问题,就是因为此时获取<em>的</em>top不是距离整个page页面顶部,而我们监听<em>的</em>页面<em>滚动</em>却是

    2K20

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

    引 项目中需要一个效果:下滚列表顶部自定义视图不移动,上移时隐藏顶部视图,提高列表展现范围。...在此基础上海加了一个隐藏列表动态渐入渐出效果,如下: 实现 实现要点是,顶部视图要随着列表滚动滚动,且列表最上是可以滚动到屏幕顶部,最下就是滚动到一个固定位置就不再往下滚动了,至于渐变效果只要能控制滚动自然也能控制随着滚动去改变...,就必须获知列表滚动效果,这里我们在自定义顶部视图类中加一个UIScrollView属性,在初始化时候就将我们列表赋给这个属性(UITableView是UIScrollView子类):...视图内容可以自己定义,就只放了一张图片。 对于滚动跟随,我们采用KVO键值观察(可以查看这篇博客来了解)来做。...第二件事是让顶部视图随着移动而渐变,当移动到最高彻底透明,移动到最低不透明,这个alpha值也是根据移动值来计算: - (void)updateSubViewsWithScrollOffset:

    1.9K10

    ios7之后导航栏问题2

    /article/details/53333748)博客中我们提到了在有导航栏情况下根视图坐标原点问题,但我当初添加是一个普通视图,如果我们添加是一个UITableView我们会发现问题又会有所不同...添加UITableView代码: UITableView * tableV = [[UITableView alloc] init];     tableV.backgroundColor = [...从图中我们可以看到白色视图和蓝色tableV,可见根视图坐标原点确实是(0,0)。那为什么展示出来tableV却像是下移了64?...那是因为tableV内边距距离上方发生了64偏移量,我们可以通过打印tableV内边距查看: 在viewDidLoad方法中打印此方法: NSLog(@"%f", self.tableV.contentInset.top...还发现,如果我们视图是tabBarController我们添加tableV内边距同样距离底部发生49偏移。 不知道两篇博客是否解答了读者心中一些疑惑,希望能够。

    84330

    优化在 SwiftUI List 中显示大数据集响应效率

    List 效能 List 作为 SwiftUI 对 UITableView ( NSTableView )封装,大多数情况下性能都比较令人满意。...在 SwiftUI 视图生命周期研究[3] 一文中,对 List 如何对子视图显示进行优化做了一定介绍。...itemRow_withoutID_2022_04_23.2022-04-23 17_01_05 现在摆在我们面前有两个问题: 为什么使用了 id 修饰符视图提前实例化呢?...id 修饰符与视图显式标识 想搞清楚为什么使用了 id 修饰符视图提前实例化,我们首先需要了解 id 修饰符作用。...由于整个滚动过程中仅实例化并绘制了 100 多个子视图,对系统压力并不大,因此在经过反复测试后,首次点击 bottom 按钮延迟滚动问题大概率为当前 ScrollViewProxy Bug

    9.2K20

    【IOS开发基础系列】UICollectionView专题

    Views 追加视图 如果你对UITableView比较熟悉的话,可以理解为每个SectionHeader或者Footer,用来标记每个sectionview     • Decoration Views...因为仅仅是视图相关,而与数据无关),放到稍后再说。...这次Apple给我们带来好康是被选中cell自动变化,所有的cell中子view,也包括contentView中子view,在当cell被选中自动去查找view是否有被选中状态下改变。...关于详细自定义UICollectionViewLayout和一些细节,将写在之后一篇笔记中。         ...需要注意根据滚动方向不同,header和footer高和宽中只有一个起作用。垂直滚动section间宽度为该尺寸高,而水平滚动为宽度起作用,如图。

    73430

    UIScrollView进阶技巧

    UIScrollView是iOS开发中经常用到UI控件,像图片轮播之类效果都可以用UIScrollView来实现,当然轮播什么网上有很多教程了,就不多说了。...今天主要讲三个跟交互有关效果(稍微有点标题党啊,其实也没有多进阶……),也不是直接用UIScrollView,而是子类UITableView和UIWebView。...列表上面是三个栏目按钮和轮播图片,向上滚动,按钮和图片一起向上,按钮周边区域颜色渐变,然后在到指定位置(这里是盖住导航栏之后)按钮停住不动,周边颜色也完全变成导航栏颜色,列表数据还可以继续滚动。...里内容在Y轴上偏移量。...感兴趣同学可以看一下单独为这个效果写一个简单Demo,clone下来自己跑一下,琢磨琢磨应该就明白了。

    97840

    关于首页设计框架和一些细节处理分析

    开始觉得很简单,毕竟也是对于 UITableView和 UICollectionView 很溜码农。 之前界面框架很简单 ?...我们 Header 是很高呀 完全行不通呀 后来继续找了几个库 添加 删除 那几天把折腾 差点要封掉 后来终于找到了一个第三方 可以满足90%需求 只是底部又是多出40高度 滚动无法联动 bug...因为放在 TableView 随着滚动刷新表格 对象重新生成 很难和下面的频道页面联动 3 为什么整体不用 UICollectionView 上面是 Header?...现在自己做了处理 终于达到了联动效果了 4 上拉剩下10个商品时候要做 预加载请求 发现因为每次 reloadData 都会让滚动位置回到之前位置。...发现每次刷新对象改变了 所以每次刷新数据 回到初始位置 就用字典保存对应频道 UICollectionView 对象 每次刷新 取对象进行刷新 发现左右切换频道之后 再次回来 位置再次不是之前位置

    81620

    Ios常用第三方框架(二)

    比如,之前要实现一个填写各种资料列表,可能需要很多代码,现在只需要几行代码就可以实现。 UIScrollSlidingPages - 允许添加多视图控件,并且可以横向滚动。...HorizontalScrollCell - HorizontalScrollCell是一款使用方便水平方向可滚动单元格,适用于UICollectionView中实现水片方向滚动视图。 。...使用基于ViewControllercontainer特性(而不是scrollview)来管理各个子页面,以支持无限分页,源码推荐说明。...QuickRearrangeTableView - 基于 UITableView 快速重排功能扩展子类。通过长按选定单元格然后滚动移动到指定位置。...WMPageController - 一个方便 pageContrller 控件,里面还包括滚动视图。 PSTCollectionView - PSTCollectionView。

    7.7K60
    领券