UILabel textColor在iOS 4.3中未正确设置

时间:2012-07-31 17:01:13

标签: ios uilabel ios4

使用iOS 5.1模拟器应用程序感觉很棒,但在iOS 4.3模拟器上测试后出现了一些难以理解的问题:

我为UITableView使用自定义UITableViewCell,它有很少的UILabel和一个UITextView。问题是textColor属性似乎根本不起作用 - 尽管显示了背景并且NSLog打印了正确的文本,但我的标签上的所有文本仍然是不可见的。我尝试在IB中以编程方式更改textColor值,但都没有帮助。

UITextView怎么样 - 没关系。我想,我可以用textViews替换所有标签,但它不是编程的好方法,是吗?

我会感激你的任何帮助,因为它只会让我大吃一惊!

更新(已添加源代码)

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

    FeedItemCell *cell = [tableView dequeueReusableCellWithIdentifier:[FeedItemCell cellID]];
    if (!cell) {
        cell = [FeedItemCell cell];
    }

    NSIndexPath *selectedPath = [tableView indexPathForSelectedRow];
    if (selectedPath && (indexPath.row == selectedPath.row) ) {
        [self selectRowAtIndexPath:indexPath];
    }

    [cell fillWithContents:[feedItemsController.fetchedObjects objectAtIndex:indexPath.row]];
    return cell;
}

//---
@implementation FeedItemCell 

- (void)fillWithNewsItemContents:(FeedItem *)feedItem {
    self.nameLabel.text = [feedItem.creator fullName];
    self.dateLabel.text = [TimeFormatter newsTimeWithDate:feedItem.postedDate];
    self.detailTextView.text = [FeedItemCell detailTextViewStringFromFeedItem:feedItem];
    self.commentLabel.text = [self _commentsTitleWithNews:feedItem];
    self.avatarImageView.image = [feedItem.creator avatar];
}

所有UILabel都在xib - 文件中定义 enter image description here

3 个答案:

答案 0 :(得分:1)

好像我找到了解决方案。出于某种原因,UILabel不支持iOS 4.3中的Helvetica Neue字体(尽管UITextView确实如此)。 我刚刚注意到它添加了其他测试UILabel,并且在成功之后,试图找到新旧测试之间的差异。

因此现在只需要选择另一种合适的字体:)

非常感谢你们,并且在没有理由的情况下感到烦恼。

答案 1 :(得分:0)

这很奇怪。但我建议你测试实际的iOS 4.3和5.1设备。模拟器的准确率为95%,而不是100%。所以你应该对设备进行健全性检查。

答案 2 :(得分:0)

看到你的代码真的很棒 - 特别是,我想看看:

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

或者您分配的任何其他地方,实例化并添加这些行为不端UILabel作为子视图。但我可以猜测可能出现的问题:

  • 您可能尝试在正确分配或实例化之前设置UILabel的元素。例如,如果您致电:

    ,就会发生这种情况
    [myLabel setText:@"Hello"];
    
    在你打电话之前

    UILabel *myLabel = [[UILabel alloc] initWithFrame:someFrame];
    

    如果您执行类似的操作,它将编译正常并在运行时静默失败。

  • 您可能忘记将标签添加到正确的UIView - 在UITableViewCell中,内容通常应添加为单元格的contentView属性的子视图:

    [[myCell contentView] addSubview:myLabel];
    

还有其他一些事情可能会发生,但在做出任何盲目的猜测之前,我宁愿看到你正在使用的代码。我会更新我的答案。