gpt4 book ai didi

ios - 将日期格式化为固定宽度且不补零

转载 作者:行者123 更新时间:2023-11-30 12:49:50 25 4
gpt4 key购买 nike

我有一个 UITableView,其中每一行显示一个日期和时间以及一条消息(下面的屏幕截图)。我使用单个属性字符串来显示行中的文本(这是色差所必需的)。

因为我不想对月份、日期或小时进行零填充,所以冒号左侧的日期是可变长度的,这会导致消息列表看起来杂乱无章。

我想要的结果是所有冒号垂直对齐,以便消息对齐,尽管日期中的字符数是可变的。实现这一目标的最佳方法是什么?

我已经尝试过本质上的空格填充(通过检测月、日和小时的长度),但结果仍然没有完美对齐,并且可能会导致长(难看的)空白 block 。需要填充三个(月份、日期和小时)。也许有一种方法可以将这个额外的空间均匀地分配给所有角色?

日期格式:

//choose format for the date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "M/d h:mma: "
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "pm"

进入 View :

//first put in the date
let classHistoryCellText = NSMutableAttributedString.init(string: formattedDate)
classHistoryCellText.addAttribute(NSForegroundColorAttributeName, value: UIColor.init(hex: "#00000", alpha: 0.3), range: NSMakeRange(0, lengthOfDate))

//append what the message is
classHistoryCellText.append(NSMutableAttributedString.init(string: classBeingViewed.classHistory[indexPath.row]["event"] as! String))
classHistoryCellText.addAttribute(NSForegroundColorAttributeName, value: UIColor.init(hex: "#00000"), range: NSMakeRange(lengthOfDate, classHistoryCellText.length - lengthOfDate))

//bold the entire thing and make it size fontSize
classHistoryCellText.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: fontSize), range: NSMakeRange(0, classHistoryCellText.length))

classHistoryCellToDisplay.textLabel?.attributedText = classHistoryCellText

结果:

enter image description here

最佳答案

尝试将日期格式化程序更改为:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd hh:mma: " // this line is changed
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "pm"

这将使月份、日期和小时始终具有两位数,这将使所有日期的宽度相同。

除非您有避免显示前导零的特定要求,否则这将起作用。如果是这种情况,最简单的解决方案是使用两个标签 - 一个用于日期,一个用于状态。使日期标签具有固定宽度。

关于ios - 将日期格式化为固定宽度且不补零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41137050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com