【问题标题】:Storyboard prototype cell attributed text label does not display same as prototype故事板原型单元格属性文本标签与原型显示不同
【发布时间】:2013-08-16 18:42:00
【问题描述】:

当使用带有自定义单元格的 TableView 时,我有 4 个不同字体/颜色的标签。在故事板(图片左侧)中,它们显示为不同的字体/大小和颜色,但是当我在模拟器(图片右侧)中运行应用程序时,它们会恢复为标准字体和大小。 (需要 10 个代表点才能发布屏幕截图)

我将标签设置为“属性,在情节提要中选择字体、颜色和大小(在标签下),并且在情节提要的原型单元格中看起来都不错。但是当我运行应用程序时,这些属性被忽略了。我错过了什么?

【问题讨论】:

  • 让我们看看你的cellForRowAtIndexPath
  • 显示您的代码并链接到屏幕截图
  • @wain 我无法链接屏幕截图,因为我还没有足够的 stackoverflow 代表点。
  • @TimothyMoose `static NSString *CellIdentifier = @cardTransCell"; SCECardTransactionCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; cell.lblAmount.text=@"12,345.67"; return cell;

标签: ios xcode uitableview


【解决方案1】:

当您在代码中设置标签的文本时,故事板属性将被覆盖。解决此问题的一种方法是从标签中复制属性,然后在设置文本时重新应用它们:

UILabel *label = cell.lblAmount;
NSMutableDictionary *existingAttributes = [[NSMutableDictionary alloc] initWithDictionary:[label.attributedText attributesAtIndex:0 effectiveRange:nil]];
label.attributedText = [[NSAttributedString alloc] initWithString:@"12,345.67" attributes:existingAttributes];

请注意,您不需要使用内置标签执行此操作,例如textLabel。我认为表格视图在显示单元格之前以某种方式重新应用情节提要属性。

【讨论】:

  • 这种开始起作用了。我现在从情节提要中获取了属性文本,但是您的第 3 行没有将我的文本更改为“@”MyText”。这是我放入情节提要中的原始示例文本。
  • 您的label 变量可能是nil。您需要将第一行替换为您用于访问自定义标签的任何方法。
  • 我根据您在上面发布的cellForRowAtIndexPath 更新了我的示例代码。
  • 我实际上发现我根本不需要“AttributedText”,我可以在字体下选择“自定义”,然后使用“普通”属性使用我想要的字体和颜色。很高兴现在知道如何使用“AttributedText”来改变句子中单词的外观。
猜你喜欢
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多