Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在表视图中提高UILabel性能?_Ios_Uitableview_Uilabel - Fatal编程技术网

Ios 如何在表视图中提高UILabel性能?

Ios 如何在表视图中提高UILabel性能?,ios,uitableview,uilabel,Ios,Uitableview,Uilabel,我有一个带有自定义单元格的表格视图,我正在尝试对其进行优化,以使滚动尽可能平滑。我遵循了大多数关于表视图优化的建议,例如,使用固定高度,不使用自动布局等 我已经在一个非常优化的状态中实现了,除了一件事。自定义单元格有一个图像和几个UILabels。一张图片和三个标签,性能完美。然而,当我添加第四个标签时,我开始观察到一点抖动,非常小,但不像以前那么平滑 我在网上搜索发现,CoreText可以帮助提高性能。CoreText方向正确吗?当在表视图中使用时,是否有其他东西可以帮助改进UILabel性能

我有一个带有自定义单元格的表格视图,我正在尝试对其进行优化,以使滚动尽可能平滑。我遵循了大多数关于表视图优化的建议,例如,使用固定高度,不使用自动布局等

我已经在一个非常优化的状态中实现了,除了一件事。自定义单元格有一个图像和几个
UILabel
s。一张图片和三个标签,性能完美。然而,当我添加第四个标签时,我开始观察到一点抖动,非常小,但不像以前那么平滑

我在网上搜索发现,
CoreText
可以帮助提高性能。
CoreText
方向正确吗?当在表视图中使用时,是否有其他东西可以帮助改进
UILabel
性能

编辑:


我只通过设置字体、字体颜色、文本和行数来为UILabel使用简单的函数。

核心文本可能是性能的最终解决方案,但即使在实现之前,我喜欢使用名为PaintCode的程序来绘制单元格的内容,如果它们特别复杂的话

但是,在需要达到这一点之前,您可以做其他事情来加快速度:

  • 在调用
    cellForRow
    之前执行所有计算。因此,任何数字格式、日期计算等都应该事先完成并存储在模型对象上。这样,您就可以直接将它们插入到单元格属性中,它们就可以显示了。花在
    cellForRow
    上的任何额外时间都会减慢您的
    tableview
  • 将所有标签和视图设置为不透明。执行此操作时,您可能必须设置它们的背景色,但这会使绘制视图的速度更快。通过从模拟器的调试菜单中启用“颜色混合层”,可以查看哪些视图应用了透明度。你想要的是让你的细胞完全绿色

  • 核心文本可能是性能的最终解决方案,但即使在实现这一点之前,我喜欢使用名为PaintCode的程序来绘制单元格内容(如果单元格内容特别复杂)

    但是,在需要达到这一点之前,您可以做其他事情来加快速度:

  • 在调用
    cellForRow
    之前执行所有计算。因此,任何数字格式、日期计算等都应该事先完成并存储在模型对象上。这样,您就可以直接将它们插入到单元格属性中,它们就可以显示了。花在
    cellForRow
    上的任何额外时间都会减慢您的
    tableview
  • 将所有标签和视图设置为不透明。执行此操作时,您可能必须设置它们的背景色,但这会使绘制视图的速度更快。通过从模拟器的调试菜单中启用“颜色混合层”,可以查看哪些视图应用了透明度。你想要的是让你的细胞完全绿色

  • 默认情况下,在所有标签中保留一些虚拟文本。更新文本不会占用内存。 CoreText非常昂贵,可能不是为了这个!我认为虚拟文本技巧应该适合你


    希望这能奏效。

    默认情况下,在所有标签中保留一些虚拟文本。更新文本不会占用内存。 CoreText非常昂贵,可能不是为了这个!我认为虚拟文本技巧应该适合你



    希望这能起作用。

    如以下文章所述:-UILabel应该将其不透明属性设置为“是”-使用cell.layer.shouldRasterize=YES@GuyDaher尝试过,但它似乎对性能没有帮助。可以很好地保证,问题不在于UILabel,而在于单元格中的图像。@Rog当我有图像和一个UILabel时,滚动处于完美状态。只有在我添加了更多的UILabels之后,滚动才会开始变得急促。也许你是对的,这可能是其他的事情,但我仍然想知道我是否可以做任何事情来提高UILabel在表视图中的性能。你在cellForRow中做过任何繁重的计算吗?特别是对于这个新标签。正如以下文章中所述:-UILabels应该将其不透明属性设置为“是”-使用cell.layer.shouldRasterize=YES@GuyDaher尝试过,但这似乎对性能没有帮助。可以很好地保证,您的问题不是UILabel,而是单元格中的图像。@Rog当我有图像和一个UILabel时,滚动处于完美状态。只有在我添加了更多的UILabels之后,滚动才会开始变得急促。也许你是对的,这可能是其他的事情,但我仍然想知道我是否可以做任何事情来提高UILabel在表视图中的性能。你在cellForRow中做过任何繁重的计算吗?特别是对于这个新标签。我没有设置任何关于不透明度的内容,但我确实看到了红色区域,这对我来说很奇怪。那么,标签和视图的默认值是否不不透明?将它们设置为不透明是什么意思?(哪个属性?)。您能告诉我如何通过编程“将所有标签和视图设置为不透明”吗?这个问题可能会对您有所帮助?如果您仍然有问题,请使用混合层的一些屏幕截图更新您的问题,我将看看是否可以从中提供帮助。你也可以在Interface Builder的标签上设置这个不透明属性。最后我发现这不是因为我做错了,而是如果文本是中文,它总是用红色(苹果在上面添加了另一层)。我问了另外一个问题:我没有设置任何关于不透明度的内容,但我确实看到了红色区域,这对我来说很奇怪。那么,标签和视图的默认值是否不不透明?将它们设置为不透明是什么意思?(哪个属性?)。可以吗