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

计算动态标题大小时,在reloadData上重置滚动位置

是指在使用UITableView或UICollectionView等列表控件展示动态标题时,当标题内容发生变化时,需要重新计算标题的大小,并且在调用reloadData方法刷新列表数据后,将滚动位置重置为顶部。

在前端开发中,可以通过以下步骤来实现这一功能:

  1. 首先,获取动态标题的内容并计算其大小。可以使用NSString的sizeWithAttributes方法来计算文本在指定字体和宽度下的大小。根据具体需求,可以使用不同的计算方法,如boundingRectWithSize等。
  2. 在调用reloadData方法之前,将计算得到的标题大小保存下来。
  3. 在调用reloadData方法刷新列表数据后,将滚动位置重置为顶部。可以使用UITableView的setContentOffset:animated:方法将滚动位置设置为CGPointZero,即顶部位置。

以下是一个示例代码:

代码语言:txt
复制
// 获取动态标题的内容并计算其大小
let title = "动态标题内容"
let font = UIFont.systemFont(ofSize: 16)
let titleSize = (title as NSString).size(withAttributes: [NSAttributedString.Key.font: font])

// 保存标题大小
let previousContentSize = tableView.contentSize

// 刷新列表数据
tableView.reloadData()

// 重置滚动位置为顶部
tableView.setContentOffset(.zero, animated: false)

// 调整滚动位置,使得列表不会跳动
let contentOffsetY = tableView.contentOffset.y + (tableView.contentSize.height - previousContentSize.height)
tableView.setContentOffset(CGPoint(x: 0, y: contentOffsetY), animated: false)

在这个示例中,我们首先计算了动态标题的大小,并将其保存在titleSize变量中。然后,在调用reloadData方法之前,我们保存了tableView的contentSize,以便后续调整滚动位置。接下来,我们调用reloadData方法刷新列表数据,并将滚动位置重置为顶部。最后,我们根据列表内容的变化调整滚动位置,使得列表不会跳动。

对于这个功能,腾讯云没有特定的产品或服务与之直接相关。然而,腾讯云提供了丰富的云计算服务,如云服务器、云数据库、云存储等,可以帮助开发者构建和部署各种应用。具体可参考腾讯云官方网站(https://cloud.tencent.com/)获取更多信息。

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

相关·内容

你可能需要为你的 APP 适配 iOS11

前言 前几天发现在做的APPiOS11系统动画有异常,在其他系统的设备都是正常的,动画的操作是观察tableView的contentOffset变化后执行的,异常动画发生在tableView reloadData...一、UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,Files这个APP中能够看到iOS11中UIKit’s Bars的一些新特性:浏览功能上的标题视图...(向上滑动后标题会回到原来的UI效果)、横屏状态下tab的文字和icon会变为左右排列。...UI navigation bar中新增了一个BOOL属性prefersLargeTitles,将该属性设置为ture,navigation bar就会在整个APP中显示标题,如果想要在控制不同页面标题的显示...因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。

2.4K00

iOS开发笔记(十一)— UITableView、ARC、xcconfig、Push

正文 UITableView UITableViewreloadData 的时候,如果height的高度发生较大变化,contentOffset无法保持原来的大小时,会发生滚动的效果。...如果直接reloadData再setContentOffset:设置位置,仍会出现滚动的效果。...如果需要去除该滚动效果,可以reloadData之后,调用scrollToRowAtIndexPath并设置animated:NO,最后再用setContentOffset:微调位置。...究其原因,是因为UITableView不会调用1~499行所有的heightFor和cellFor方法,所以无法准确计算出来位置。...从这里去分析,如果需要滚动到准确的位置,可以用estimatedRowHeight的属性,设置和行高一样的高度;在行高各不相同的场景,可以设置estimatedRowHeight为大致的数字,scrollToRowAtIndexPath

1.8K20
  • 你可能需要为你的APP适配iOS11

    前言 前几天发现在做的APPiOS11系统动画有异常,在其他系统的设备都是正常的,动画的操作是观察tableView的contentOffset变化后执行的,异常动画发生在tableView reloadData...一 UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,Files这个APP中能够看到iOS11中UIKit’s Bars的一些新特性:浏览功能上的标题视图...(向上滑动后标题会回到原来的UI效果)、横屏状态下tab的文字和icon会变为左右排列。...UI navigation bar中新增了一个BOOL属性prefersLargeTitles,将该属性设置为ture,navigation bar就会在整个APP中显示标题,如果想要在控制不同页面标题的显示...因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。

    81720

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

    UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,Files这个APP中能够看到iOS11中UIKit’s Bars的一些新特性:浏览功能上的标题视图...UI navigation bar中新增了一个BOOL属性prefersLargeTitles,将该属性设置为ture,navigation bar就会在整个APP中显示标题,如果想要在控制不同页面标题的显示...滚动的时候,以下交互操作都是由UINavigationController负责调动的: UIsearchController搜索框效果更新 标题效果的控制 Rubber banding效果 //当你开始往下拉...,标题会变大来回应那个滚轮 所以,如果你使用navigation bar,组装push和pop体验,你不会得到searchController的集成、标题的控制更新和Rubber banding效果...因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。

    1.6K60

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

    当执行TableView的reloadData方法进行界面刷新时,系统先会把所有行的行高数据拉取一遍,之后和UITableViewCell配置部分的场景一直,会拉取即将出现在屏幕的cell的行高数据。...开发中通常会遇到一些十分复杂的界面,而这些界面中cell的高度都是需要通过请求到的数据动态改变的,每个cell都要写复杂的尺寸计算代码十分令人心烦。...iOS7之后,系统提供了一种自动计算cell高度的方法,这无论性能还是工作量,都完全解放了开发者。        ...关于细节方面,还有一个问题需要注意,预估的行高会影响到TableView右侧滚动条的展现,如果每个cell行高跳跃跨度十分滚动条宽度的配置会失准,随着用户滑动表视图,右侧滚动条可能会出现长短跳跃的情况...,如果开发者需要精准这个滚动条的配置,可以如下代理方法中返回具体cell的估计行高。

    1.9K20

    【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)

    – 京东商城】uni-app 商品分类页面() 文章目录 一、渲染右侧二级和三级分类 1.1 动态渲染二级分类页面 二、渲染二级分类UI结构 三、渲染三级分类UI结构 四、切换一级分类重置滚动位置...margin-bottom: 5rpx; } text { font-size: 25rpx; } } } 效果: 四、切换一级分类重置滚动位置...data节点定义数据scrollTop 注意:对scrollTop 赋值前后值不变情况 下会没有效果,如果默认值为0,函数动态赋值也为0,那么组件就会默认为0,视为没有变化,这里解决方法是0,1变化...: [], // active 索引判断 active: 0, // 二级分类数据 cateList2: [], // 滚动位置...this.cateList2 = this.cateList[options].children // 重置滚动位置 动态变化 this.scrollTop = this.scrollTop

    87630

    iOS操作属性列表plist(增删改查)

    引 iOS的存储方式之一——属性列表plist,还是经常见到的,可以很方便的用来管理一些有序的批量数据,特别是用来显示固定的内容到表单时,不需要在代码中反复地繁琐编写数组,而可以plist属性列表中进行可视化操作...,极为便捷,本文讲解如何创建和使用plist列表,并显示表单。...Xcode左侧的工程文件列表中,找一个你喜欢的位置,一般Supporting Files文件夹内,新建我们的plist文件,方法是右键选择New File...或者按command+N键打开新建文件的窗口...];// 重置表单 效果如图: 6、删除plist内容 同添加的思路一样,同样也是先操作可变数组,删除某个位置的内容,然后将可变数组存入原位置,再重新读取显示: //ViewController.m...];// 重置表单 效果如图: 7、修改plist内容 还是一样的思路,修改可变数组某个位置的内容,存入原位置,重新读取显示: //ViewController.m文件中 // 修改plist

    1.5K20

    小智在这3年开发中遇到的 CSS 问题及解决方案,有大佬帮他总结好了 !

    1.重置button和input元素的背景 添加一个按钮时,重置它的背景,否则它会在不同的浏览器中看起来不同。... macOS 的Chrome上会很好看。然而, Windows滚动条总是在那里(即使内容很短)。...移动设备,浏览器会显示一个水平滚动条。 ? 解决方法就是使用 flex-wrap: wrap,这样当水平空间不够时,浏览器会帮我们自动换行。...要解决这个问题,将aside元素对齐到其父元素的开始位置,这样它的高度就不会扩大。...压缩或拉伸图像 CSS中调整图像大小时,如果宽高比与图像的宽度和高度不一致,则可能会对其进行压缩或拉伸。

    3.7K10

    实践-小细节Ⅵ

    For 循环中判断的,控件的Frame设置,主要是对 Lable的位置作逻辑判断,其他的其周围的控件都根据当前 i 下的 label 的位置来设定自己的位置。...所以只要设定好 每一个 i 下的 Label的位置,其他的控件位置就定了,这样最简单。 在此基础可以把这样复杂的页面完成设置成互相依赖,最后再单个视图赋值高度,整个视图就很方便的变了。....centerYEqualToView(textLabel[i]) .widthIs(Scale_X(25)) .heightIs(Scale_Y(25)); } 重置...动态添加高度很高的Cell 使用UIView动画实现: //动态移动 [UIView animateWithDuration:0.6 delay:0 options:UIViewAnimationOptionCurveEaseInOut...9.如何找到一个APP的itunes下载链接 我们可以通过 Mac的 itunes 来获取 还可以通过浏览器来获取 浏览器中 输入 : xxxx on appstore 即可,红色框中的就是手机里面的下载链接

    94920

    最新iOS设计规范四|3界面要素:视图(Views)

    相对于集合,文本信息展示一个可滚动的列表中,浏览起来会更简单和有效。 谨慎进行动态布局变更。集合的布局是可以随时更改的。...五、图像视图(Image Views) 图像视图是透明或不透明背景,显示的单个图像或动画图像序列。图像视图中,图像可以被拉伸、缩放、调整大小以适合或固定到特定位置。...屏幕适当的位置显示浮层。浮层的箭头应尽可能直接指向触发它的元素。因为浮层不能在屏幕拖动,所以浮层不能覆盖屏幕太多内容。也不能覆盖触发它的元素。 一次只显示一个浮层。显示多个浮层会使界面混乱不堪。...但不要改变滚动位置。相反,将内容添加到表的开头或结尾,让用户准备好时滚动到它。一些APP加载新数据时会显示一个加载器,并提供一个直接跳转到该数据的控件。...采用动态类型文本是个好办法,这样如果用户设备更改文字大小,你的文本内容仍然会有友好的体验。还应该在启用了辅助功能选项(例如粗体文本)的情况下测试内容单显示情况。 显示恰当的键盘类型。

    8.4K31

    iOS开发之多表视图滑动切换示例(仿头条客户端)---优化篇

    ,Demo的问题确实有,优化和改进的空间也是蛮的。...下面是实例化ScrollView的TableView的代码,由下面的代码可以看出只实例化2个TableView, 并且把初始化后的TableView放在了TableView的初始化的位置。...代码如下: 1 #pragma mark --根据scrollView的滚动位置复用tableView,减少内存开支 2 -(void) updateTableWithPageNumber: (NSUInteger...也是防新闻头条的那种,按钮多到一定个数时回使用ScrollView进行滚动本Demo中是超过6个按钮就可以滑动,而6个以下是平分整个屏幕的宽度的。...把新的代码更新到了GitHub,优化还在继续,欢迎大家批评指正。   DemoGitHub的分享地址:https://github.com/lizelu/SliderTabBar

    2.1K70

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

    titleView也是添加在主控制器,显示scrollView上面,保证titleView永远显示主控制器的View,不会随着scrollView的滚动滚动。...CLTitleButton内部设置button标题,颜色,字体大小等。...因此考虑使用控制器View的懒加载,当View要显示的时候我们才去加载他,并将View显示屏幕。而其他没有显示的控制器View就不去加载他。如图所示 ?...全部使用一种cell,先将顶部底部描述出来,中间不一样的地方放什么,视情况而定,中间部分在代码中动态添加。..." 非今年 - @"2015-11-20 09:10:05" 模型中重写时间created_at的get方法,先将时间处理好,然后显示cell // 日期的处理 -(NSString *)created_at

    1.4K70

    【数据可视化】Echarts官方文档及常用组件

    (2)数值型:需要指定数值区间,如果没有指定,将由系统自动计算从而确定计算数值范围,坐标轴内包含数值区间内的全部坐标。...ECharts 2.x中,单个ECharts实例最多只能拥有一个标题组件(title),每个标题组件可以配置主标题、副标题。...此时,设置type属性的值为“scroll”,表示图例只显示一行,多余的部分会自动呈现为滚动效果,如图所示。 由图可知,右上方的图标即图例的滚动图标, 可以将图例呈现为滚动效果。...标记点 ECharts中,标记点有最大值、最小值、平均值的标记点,也可以是任意位置的标记点,它需要在series字段下进行配置。...10, //设置主副标题间距 //设置所属图形的Canvas分层,zlevel的Canvas会放在zlevel小的Canvas的上面

    1.4K10

    长列表优化:用 React 实现虚拟列表

    虚拟列表的实现分两种,一种是列表项高度固定的情况,另一种是列表项高度动态的情况。 列表项高度固定 列表项高度固定的情况会简单很多,因为我们可以渲染前就能知道任何一个列表项的位置。...要让表单项渲染在正确位置,我们有几种方案: 容器的第一个元素用一个空元素,设置一个高度,将需要显示可视区域的 items 往下推到正确位置。我尝试着实现了,发现滚动快一点就会有闪屏现象。...组件会通过这个函数,来拿到不同列表项的高度,来计算出 offsets 数组。offsets 是每个列表项的底边到顶部的距离。offsets 的作用是滚动到特定位置时,计算出需要渲染的列表项有哪些。...然后在后面滚动时再一点点补充 offset,再一点点修正总内容高度。 为了让调用者可以手动触发高度的重新计算。虚拟列表组件通过 ref 提供了一个 resetHeight 方法来重置缓存的高度。...可以考虑给图片预设一个宽高,加载前占据好高度; 因为预估高度并不准确,会导致内容高度一直变化。这就是拖动滚动条进行滚动时,滑块和光标位置慢慢对不上的原因。

    3.7K10

    HTML+CSS基础

    ]      3、背景复合样式:不分属性书写顺序,通常按照颜色相关、图片相关、位置相关(包含是否滚动) backgroun: red url(.....现在你的文字高度不够,达不到距底端10px的位置,所以只有内边距起作用,下内边距没表现出其作用。   ...6.内容页H1标签一般都是用在内容的标题,最好也是只用一次,不过有很多内容页也用了2次,一次用在LOGO或出现在网页最前面的主关键词,一次用在内容的标题上。...如果最前面没有主要的关键词,建议最好还是只用在标题上一次。...7.当不想将H1标签用在LOGO并且网页主要的关键词在后面的时候,如果还是想加H1标签并且想H1标签的关键词靠前,可以利用DIV+CSS布局来调整主关键词的位置,这样也不会影响页面效果。

    2.8K91

    无限滚动加载最佳实践

    无限滚动(Infinite scrolling),有时候被称为无尽滚动(endless scrolling),这种技术允许用户大量内容滚动,眼中看不到结束的地方。...如果屏幕滚动的内容,用户滚动获取新内容的时候,导航条可以隐藏起来;当用户开始往回滚动试图回到顶部的时候再显示出来。 ? 2. 如果有页脚,加上“加载更多”按钮 无限滚动阻碍用户的访问页脚。...实际,这也是无限滚动设计的主要挑战之一:用户到达列表底部的时候,内容不断地加载进来,用户会有一两秒时间看到页脚,直到下一组结果加载成功并将页脚挤出视图之外。这阻止用户接触到页脚。...但是列表的位置不再存在了,这意味着使用浏览器的返回按钮一般都导致滚动位置重置到页面顶部。无怪乎用户很快就觉得沮丧,都没有一个合适的“回到列表”的功能。 ?...长按二维码关注京程一灯,阅读更多技术文章和业界动态

    4.2K20

    基础篇章:关于 React Native 之 ListView 组件的讲解

    我母亲制定的官方介绍中,这么说:有一些性能优化使得我ListView可以滚动的更加平滑,尤其是动态加载可能很大(或者概念无限长的)数据集的时候: 只更新变化的行 - 提供了rowHasChanged...removeClippedSubviews bool 用于提升列表的滚动性能。需要给行容器添加样式overflow:'hidden'。(Android已默认添加此样式)。此属性默认开启。...每一次渲染过程中Footer(尾)该会一直列表的底部,header(头)该会一直列表的头部 renderHeader function 与同理 renderRow function (rowData...行的高亮状态可以通过调用highlightRow(null)来重置。 renderScrollComponent function 返回列表行呈现的滚动组件的功能。默认为ScrollView。...粘性是指当它刚出现时,会处在对应小节的内容顶部;继续下滑当它到达屏幕顶端的时候,它会停留在屏幕顶端,一直到对应的位置被下一个小节的标题占据为止。

    2K80

    Spread for Windows Forms快速入门(3)---行列操作

    用户要重置行或列的大小,仅需鼠标左键单击行首或列首的边界线,拖拽至所需位置释放鼠标。 如下图所示,当左键被按下时,鼠标位置就会显示一个工具栏。 一定要点击列的右边缘或行的下边缘以改变列宽或行高。...代码中,你可以重置行首或列首的大小,不仅仅局限于数据区域的行或列。你也可以使用Resizable属性覆盖默认的行为,阻止用户改变大小。...无论鼠标如何滚动,冻结的前导行或前导列都会在视图的顶部或最左端显示。无论鼠标如何滚动,冻结的尾行或尾列都会在视图的底部或最右端显示。 下列图表显示了一个冻结的尾列和尾行在视图中的显示位置。 ?...,但是设计时,它们是可以滚动的。...在下面的这段代码中,width1和width2包含了标题单元格而width3则不包含标题的单元格。

    2.4K60

    Unity-Optimizing Unity UI(UGUI优化)04 UI Controls

    根据上述算法,动态图集只有创建出来后才会增大。考虑到重建过程的消耗,有必要在重建期间最小化,可以通过下面两种方法: 在有良好的字符集约束的UI,使用非动态字体和预配置所支持的图集。...TMP使用适配的时候,唯一要考虑的使二叉树查找合适的大小。使用自动大小时候最好进行最长最大文本块测试。一旦确定了合适的石村,就该禁用组件的自动尺寸,并手动设置其他文本对象的最佳字号。...这有两种基本方式填充滚动视图: 一次性将滚动视图全部需要的元素进行加载 缓存元素,需要元素的时候重新定位它们 这两种解决方案都会有一些问题。...简单的Scroll View 元素池 最简单的实现Scroll View中的对象池,同时保留ScrollView的原生便利性,最简单的方法使采用混合: 为了UI中布置元素,使布局系统正确的计算滚动视图内容的大小...但是要避免全部重新计算,要实现一个与位置改变相关联的对象池,而不是与重置父节点或改变同级顺序相关的对象池。 基于位置滚动框对象池 为了避免上述问题,直接通过改变UI元素的位置

    3.4K20
    领券