gpt4 book ai didi

iphone - 如何在表格单元格中使用 UIWebView?

转载 作者:行者123 更新时间:2023-12-03 18:22:41 25 4
gpt4 key购买 nike

我正在构建一个包含一些 HTML 文本的表格,因此我使用 UIWebView 作为自定义表格单元格的 subview 。我已经遇到了一个问题 - 当我在表格中向下滚动时,UIWebViews 需要一秒钟才能更新。例如,我将查看第 1、2 和 3 行的单元格。我会向下滚动到第 8、9 和 10 行。有一会儿,在单元格 #8 中可见的 UIWebView 的内容是单元格 #1 中的内容,单元格 #9 中的内容是单元格 #2 中的内容,依此类推。

我了解到问题在于 UIWebViews 只是缓慢地渲染文本。建议尽快将内容预加载到 UIWebView 中,而不是等到表接收到 cellForRowAtIndexPath。所以现在,我有一个域对象,它之前只有 WebView 的文本内容 - 但现在它实际上具有对 UIWebView 本身的引用。

但是现在 UIWebView 中的一些内容呈现了,当我滚动表格时,UIWebView 仅显示为灰色框。如果我触摸灰色框,它实际上会收到触摸并更新 WebView - 例如,如果我触摸一个链接(我可能会或可能不会这样做,因为该框是灰色的,这将是运气好),将请求并正确显示链接到的页面。

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
// I suppose this isn't necessary since I am just getting it from the
// Domain Object anyway
content = [[UIWebView alloc] initWithFrame:CGRectZero];
content.backgroundColor = [UIColor blackColor];
[self addSubview:content];
[content release];
}
return self;
}

// called by cellForRowAtIndexPath
- (void)setMyDomainObject:(MyDomainObject*)anObject {
UIWebView *contentWebView = anObject.contentWebView;
int contentIndex = [self.subviews indexOfObject:content];
[self insertSubview:contentWebView atIndex:contentIndex];
}

最佳答案

解决这个问题的一种方法是使用多个 UILabel,每个标签都有不同的字体。然后有策略地将它们放置在单元格内,使它们看起来像连续的文本。我已经在 UITableView 中看到了这一点,并取得了非常好的结果。

另一个性能问题可能是您覆盖了 UItableViewCell 及其 init 方法。这几乎总是会导致 UITableView 性能不佳。相反,只需使用常规 UITableViewCell 实例并将 subview 添加到其 contentView 中。

Matt Gallagher 的 Easy Custom UITableView Drawing 对此进行了广泛的介绍。 。

描述的另一种方法是使用 Three20,它也可以为您提供样式文本。

您当前尝试的操作无法使用 UIWebview 完成。

预加载不会有帮助:当 UIWebviews 在屏幕外渲染时,这会减慢 UI 的速度;您应该始终在 iPhone 上练习延迟加载。

将 UIWebview 放入 UITableView 中可能会带来潜在的 Not Acceptable 性能影响。您将需要使用其他方法来实现您的目标。

不幸的是,NSAttributedString 在 UIKit 中不可用,这可以轻松解决您的问题。

关于iphone - 如何在表格单元格中使用 UIWebView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com