iOS7忽略文本中的空格

时间:2013-10-20 07:36:05

标签: ios uitableview

我有一个在iOS7之前工作正常的应用程序,但现在在tableview单元格的文本中存在空格问题(样式右键细节)。 tableview中的某些单元格有一个公开指示符,有些没有,所以为了将所有文本对齐,我在没有公开指示符的单元格中为文本添加了一些额外的空格。请参阅日期格式化程序(YYYY之后的空格):

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation : @"UTC"];
[formatter setTimeZone:timeZone];
[formatter setDateFormat:@"dd MMM YYYY    "]; // includes 4 spaces at the end for alignment
NSString *dateUTC = [formatter stringFromDate:[NSDate date]]; //get todays UTC date
DateCell.detailTextLabel.text = dateUTC;  

将会欣赏一种更好的方式,也可以在IOS7中使用。

5 个答案:

答案 0 :(得分:2)

我认为您应该停止单独添加空格并覆盖UITableViewCell的 layoutSubviews 方法,如下所示:

- (void)layoutSubviews {
    [super layoutSubviews];

    CGRect newFrame = self.detailTextLabel.frame;
    newFrame.size.width -= 10;
    self.detailTextLabel.frame = newFrame;
}

答案 1 :(得分:2)

如果您将没有披露指示的视图上的accessoryView设置为宽度等于公开指示符的清晰UIView,那该怎么办...

这将是最好的选择,因为你永远不能确定你需要多少空格作为不同字体/字符的字符宽度

答案 2 :(得分:2)

执行此操作的最佳/唯一方法是使用'UITableViewCell'子类。

此外,如果您使用的是“UIStoryboard”,则可以使用静态单元格。

然后你就可以完全按照你想要的方式布置视图了。

使用空格绝对不是答案。特别是在iOS 7中,字体大小由用户偏好决定。如果他们增加字体大小,那么突然你的四个空格太大而且看起来不正确。

答案 3 :(得分:1)

尝试使用stringByPaddingToLegth以在字符串中添加空格:

yourString = [yourString stringByPaddingToLength:4 withString:@" " startingAtIndex:[yourString length]];

希望它有所帮助!

答案 4 :(得分:1)

谢谢大家的意见,我完全同意使用空格来对齐标签/文字并不是一个好主意,但它确实有一段时间...... :) 我设法正确地将标签与nomannasim使用layoutSubviews的想法对齐,只是稍微修改了他的代码以便为我工作。

- (void)layoutSubviews
{
[super layoutSubviews];
CGRect newFrame = self.detailTextLabel.frame;
newFrame.origin.x = newFrame.origin.x - 20;
self.detailTextLabel.frame = newFrame;
}