- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个包含 20 多行的 UITableView,每个 UITableViewCell 包含一个 UITextView,我可以在其中设置不同的 UIFont、对齐方式和颜色。当我向下或向上滚动时,滚动过程中会出现断断续续或滞后的情况,当我删除字体和文本颜色并对齐时,一切都会变得完美。 Apple 是否更改了 iOS 7 中重绘文本的方式?以前的 iOS 版本不会发生这种情况。
仪器显示消耗的时间在dequeueReusableCellWithIdentifier:forIndexPath:
-- 更新添加代码
if (unit.fontName != nil ) {
textView.font = [UIFont fontWithName:unit.fontName size:unit.fontSize.floatValue];
}
if (unit.fontColor) {
textView.textColor=[self convertString:unit.fontColor];
}
else {
textView.textColor=[UIColor colorWithRed:0 green:0 blue:0 alpha:1];
}
if ([unit.fontSize floatValue] !=0) {
textView.font = [UIFont fontWithName:textView.font.fontName size:[unit.fontSize floatValue]];
}
if (unit.textAlignment) {
switch ([summaryUnit.textAlignment intValue]) {
case 0:
textView.textAlignment = NSTextAlignmentLeft;
break;
case 1:
textView.textAlignment = NSTextAlignmentCenter;
break;
case 2:
textView.textAlignment = NSTextAlignmentRight;
break;
default:
break;
}
}
最佳答案
在 UITableView 的幕后发生了很多事情,这可能无法说明为什么它看起来没有响应。
例如,您不应该在 tableView:heightForRowAtIndexPath:
中做大量工作,因为 UITableView 需要询问数据集中每一行的高度,无论它们是否明显在屏幕上或不在屏幕上。它这样做是为了确定内容大小。
导致问题的可能根本不是您的数据或您的单元格。具有大量 subview 的复杂单元格可能在合成器中呈现缓慢。特别是如果你有透明度之类的东西。
因此,每当我实现 UITableView 时,我总是为自己制定四个基本规则。
1) 始终知道在重新加载数据时需要告诉 TableView 什么。不要在数据源或委托(delegate)方法中做很多事情。在 UITableView 需要时准备好一切。
2) 不要在滚动周期中销毁和创建 View 。这样一来,您不应该创建新的 UIView(或其他任何东西)——例如在您的 prepareForReuse
方法中。只需重置现有 View 和控件的内容,然后在 UITableView 要求您时重新配置它们。
3) 单元格中不要有复杂的 View 层次结构。尤其是需要渲染的透明度和越界内容,对于合成器来说要以足够快的速度渲染会很麻烦。
4) 不要在 tableView:cellForRowAtIndexPath:
中配置单元格。只需出队并返回所需的单元格。始终在 tableView:willDisplayCell:forRowAtIndexPath:
委托(delegate)方法中配置和设置单元格。
话虽这么说,但还是有一些技巧可以帮助您。正如我上面提到的,不要在单元格的 prepareForReuse
方法中创建和销毁 View 或控件。根本不要做重量级的工作。只需重置您的 View 并继续。 这听起来像是您正在做的事情,因为它是 dequeueReusableCellWithIdentifier:forIndexPath:
导致您遇到麻烦的原因。
最后,如果是因为合成(Instruments 会在某些与 Quartz 相关的方法中显示工作),您可以通过使用单元格 CALayer 的 shouldRasterize
和 rasterizationScale
来成功。这有时可以加快相当大的单元格渲染速度。
让我知道这些东西是否有意义,以及它是否可以解决您的问题。
编辑:
附言。是的。 Apple 确实更改了 iOS 7 中的文本呈现。但是你为什么要使用 UITextView?!?我不太了解它,但我知道它比 UITextField 或 UILabel 重量级得多。也许你可以考虑改用那些。 UITextView 通常用于编辑类似于文档的内容(如 Notes 应用程序)。 我真的认为这可能是造成您麻烦的原因。
关于ios - 糟糕的 UITableView 滚动性能问题 iOS 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22784214/
我坚持我的项目(用 Swift 编写) 我有一个 UITableView,它有一个字符串,它提供了表格中的十个类别。我想做的是选择这些类别中的一个来触摸它,然后打开一个包含其他类别的 secondTa
好的,这从 iOS 7 Beta 6 开始就被打破了。 在启动时,我将表格 View 的背景更改为图像(如果我将其设置为颜色,它会做同样的事情)并且表格单元格是白色的...... 当我选择一个单元格时
我有一个包含不同部分的 UITableView,每个单元格上都有一个图像。因为图像是为每个单元格单独下载的,所以我正在寻找一种延迟加载解决方案。 在 iOS Developer Library 上,它
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
可以在UIRefreshControl的底部添加UITableView吗? 我会用它来加载更多数据。 拜托,有什么建议吗? 最佳答案 我相信不会有任何简单的解决方案来解决这个问题。可能有人可以编写一个
我有一个 UITableView 和一个使用 Swift 的自定义 UITableViewCell。当我设置 self.MyTable.editing = true 时,我看到该行上有删除图标,并且似
我为 iPhone 创建了一个下载器应用程序。我有用于显示主动/被动下载的表格 View 。在 tableview 的自定义单元格中有进度条,它显示 %XX 下载状态。现在我正在使用 NSTimer
我正在编写 UITableView 的自定义子类。我需要这个对象本身成为它自己的数据源和委托(delegate),然后这个子类将有它自己的数据源和委托(delegate)。这主要是为了让我可以拦截对数
我有一个问题已经困扰我几天了。 我有一个名为 countries 的数组。该数组包含一个自定义对象,其中包含国家、城市、IP、状态等数据。 我需要在按属性“国家/地区”划分的表格 View 中显示这些
我有一个 UITableViewController,目前显示 4 个将始终显示的单元格,并且想将它们组合在一起,但我不知道如何操作。当在 UIViewController 或类似的东西上插入标准 U
我以编程方式创建了一个 UITableView,现在我想向它添加一个固定的标题。 正如我下面的代码一样,标题也随着我的 tableview 滚动。 UILabel *label = [[[UI
我正在创建一个 UITableViewController(在 UINavigationController 的根部)并在另一个 View Controller 之上以模态方式呈现它。我让它在一定程度
我有问题。我有动态 TableView 。所以我需要在我的 textLabel 中更改文本大小。我试过: 一个: cell.textLabel.font = [UIFont systemFontOfS
iOS 8 中的新功能是 separatorEffect属性,您可以为其分配 UIVisualEffect。有没有人知道这是做什么用的?我试过了,我不认为它有任何,呃,视觉效果。 最佳答案 我想知道完
今天早上,我刚刚安装了包含iOS 6的新Xcode。 我有一个加载了包含章节和行的plist文件的表格 View 。各章定义各节。 用户选择章节和行,并将tableview自动滚动到正确的位置(在vi
我在iOS 7上启动VoiceOver时遇到了一些麻烦。我确实在UITableViewHeaderFooterView中注册了viewDidLoad子类的实例,但是当我用-[tableView deq
我在 UITableView 中添加了一些数据,我想更改单元格中显示的文本的颜色。 是否有委托(delegate)方法可以执行此操作,或者有其他方式吗? 最佳答案 无需标签 您只需要编码: cell.
是否可以在滚动 UITableView 时动态更改单元格的高度? 当用户将其向下拖动到顶部时,滚动位置到达某个点时,我需要更改多个单元格的高度。我可以通过发出 reloadData 成功地做到这一点,
我正在使用 iOS 5,并在表格中动态生成单元格(2 个部分,每个部分 3 行)。每个部分都有一个标题,该标题也是使用 titleForHeaderInSection 调用动态生成的。 我还设置了一个
我正在寻找 UITableView 的回调函数当我使用 Apple Remote 导航并按向上或向下键选择行时(而不是按 Enter 键时),当该行聚焦时。 在 iOS 上,我们有 didSelect
我是一名优秀的程序员,十分优秀!