首页
学习
活动
专区
工具
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...的新特性 Scroll Views 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器中,现在一般navigationContollers会传入一个contentInset给其最顶层的viewController...滑动操作这里还有一个需要注意的是,当cell高度较小时,会只显示image,不显示title,当cell高度够大时,会同时显示image和title。

    82820

    你可能需要为你的 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

    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滚动时,更新imageView的Y坐标值 在UIScrollViewDelegate的scrollViewDidScroll:方法里调用cell的对象方法,更新imageView的...控制器不能使UITableViewController,只能是UIViewController的view上添加一个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时,会显著影响主线程的性能。

    38120

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

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

    65530

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

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

    3.9K80

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

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

    2K20

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

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

    2.1K20

    MJRefresh源码分析 原

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

    69210

    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的偏移。 不知道我的两篇博客是否解答了读者心中的一些疑惑,希望能够。

    84730

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

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

    1.9K10

    优化在 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.3K20

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

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

    90430

    UIScrollView进阶技巧

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

    98240

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

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

    81820

    Cocos2dx-Lua UIScrollView 和 UITableView 对比

    为什么写这个 ----       上面这个问题的答案也是我写这篇文章的初衷,在最近给游戏添加一些列表的时候,对比着应用了一下他们两个,在它们两个之间的优劣势之间进行取舍,就有了这个问题的答案。      ...按照我一个iOS开发而言,他们俩之间交集就是 UITableView是UIScrollView 的子类,也就是说UITableView是在UIScrollView的基础上写的,在平时的应用中 UITableView...但是在Cocos中,UITableView的性能真的好低!这是我这两天使用它之后唯一的感受! ...并且它的优化方案不好找,我找了一会,没找到合适的一个优化方案,这和我们iOS或者Android就不一样了,Android哪怕是性能不高的ListView在经过性能优化之后还是可以的,这个Cocos的UITableView...这样当我们需要从上往下显示View的时候就只能倒着去设置它的位置了,这是需要注意的第一点!

    1.6K30
    领券