我有一个在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中使用。
答案 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;
}