gpt4 book ai didi

ios - UITableViewCell 的 textLabel 的字体变化没有视觉上的变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:20:09 25 4
gpt4 key购买 nike

当我将 UIViewController 推送到我的 UINavigation Controller 时,如下所示:

[(UINavigationController *)self.parentViewController pushViewController:[[[Fonts alloc] initWithNibName:@"Fonts" bundle:nil] autorelease] animated:YES];

其中 Fonts.xib 是一个 UIView,只有 UITableView 由 Fonts 对象控制,该对象是 UIViewController 的子类,充当 UITableView 的数据源和委托(delegate)。

在 Fonts 对象中,我创建了一个 UITableViewCell,如下所示:

- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"BlahTableViewCell"];

if (!cell) {
cell = [[UITableViewCell alloc]
initWithStyle: UITableViewCellStyleDefault
reuseIdentifier: @"BlahTableViewCell"];
[cell autorelease]; // Delete for ARC
}

return cell;

}

然后我在这里更改单元格的字体:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cell.textLabel setFont:[(UIFont *)[self.listOfFonts objectAtIndex:indexPath.row] fontWithSize:cell.textLabel.font.pointSize]];
cell.textLabel.text = [(UIFont *)[self.listOfFonts objectAtIndex:indexPath.row] fontName];
}

listOfFonts 是 UIFont 对象的 NSArray。

当 View 出现时,它看起来像 UITableView without changed fonts

如果我在 UITableView 上调用 reloadData,或者如果我用手指将 UITableViewCells 拖出屏幕并让它们弹回,它们将被重绘并且 View 中显示的单元格的字体已更改。

问题似乎是 UITableViewCells 绘制得太早了。如果我延迟绘制它们,一切看起来都是正确的,但我希望 UITableView 在 UINavigationController 将我的 View 滑动到位时正确显示。

知道我做错了什么吗?

编辑:我将我的问题的一个简单明了的示例上传到 Dropbox。 http://dl.dropbox.com/u/5535847/UITableViewIssue.zip

最佳答案

解决了!

好吧,我遇到了与原始海报完全相同的问题,这就是问题所在。

引起问题的行是:

[cell.textLabel setFont:[(UIFont *)[self.listOfFonts objectAtIndex:indexPath.row] fontWithSize:cell.textLabel.font.pointSize]];

具体来说,您的问题是因为您试图为单元格的 textLabel 提供它自己的 pointSize,但 pointSize 尚不存在,因此会出现奇怪的错误。对我来说,我注意到由于奇异矩阵不可逆,“变换”失败了。一旦我将标准值硬编码为我的 pointSize,我就会立即看到我所有的标签都使用正确的字体绘制。注意:关于为什么重绘有效,这是有道理的,因为那时你的 textLabel 确实有一个 pointSize。

在任何情况下,您都需要在此处明确设置您的 pointSize,不要使用 textLabel“已有”的内容,因为在您“重新加载”单元格之前它没有任何内容。

关于ios - UITableViewCell 的 textLabel 的字体变化没有视觉上的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135297/

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