【问题标题】:How to set UITableViewCellStyleSubtitle textAlignment to center in iPhone iOS4?如何在 iPhone iOS 4 中将 UITableViewCell StyleSubtitle 文本对齐设置为居中?
【发布时间】:2010-06-23 09:31:57
【问题描述】:

自从使用 iPhone SDK 4 将 XCode 升级到版本 3.2.3 后,我的代码不再工作了。

我有一个样式为UITableViewCellStyleSubtitle 的默认单元格,并且想将textLabeldetailTextLabeltextAlignment 设置为center,但没有任何反应。 以前使用的相同代码现在不再工作了。在UITableViewCellStyleDefault 中心对齐仍然有效。

有谁知道如何解决这个问题?事实上,我不想仅使用自定义单元格。

【问题讨论】:

    标签: iphone uitableview ios4


    【解决方案1】:

    文本不居中的原因是标签仅与文本一样宽。您可以通过设置文本标签的背景颜色来确认这一点:

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
        cell.textLabel.backgroundColor = [UIColor orangeColor];
    }
    

    手动设置单元格宽度似乎也没有效果。所以你真的应该添加自己的子视图或创建自己的UITableViewCell 子类。

    UITableViewCellStyleSubtitle 的文档甚至说:

    具有左对齐的单元格样式 顶部的标签和一个 左对齐标签下方较小 灰色文本。 iPod 应用程序使用 这种风格的单元格。

    【讨论】:

    • 你是对的,但为什么这在以前的 iOS 3.0 中运行良好?从那时起,文档就没有改变过。我认为 textAlignment 属性通常不会对齐文本而不是标签。
    • 我只是尝试在不同版本的模拟器中运行为背景着色的代码:它仅适用于 3.0。从 3.1 开始,标签上的宽度仅与文字一样宽。我认为他们在 3.1 中对其进行了更改以加快绘图速度(因为视图较小)。文档说标签是左对齐的,所以没关系。您不能依赖未记录的功能。
    【解决方案2】:

    这是一个两部分的解决方案,用于在渲染后更改标签宽度,从而实现居中:

    -- (void) updateCenteringForTextLabelInCell:(UITableViewCell*)cell {
    
        UILabel* label = cell.textLabel;
    
        label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, cell.contentView.frame.size.width, label.frame.size.height);
    
    }
    
    
    -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    
    {
    
    // do your usual
    
    // call the helper method 
    
    [self performSelector:@selector(updateCenteringForTextLabelInCell:) withObject:cell afterDelay:0.05];
    
    }
    

    【讨论】:

      【解决方案3】:

      好的,Apple 开发团队终于在 2010 年 6 月 23 日回答了我的错误报告:

      "请尝试设置文本对齐方式 调用后在 layoutSubviews 中 超级棒。”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 2012-06-19
        • 2018-10-18
        • 2021-09-13
        • 1970-01-01
        • 2015-09-28
        相关资源
        最近更新 更多