格式化UILocalNotification.alertBody的文本

Pet*_*etr 5 ios uilocalnotification

我正在寻找一种如何格式化文本的alertBody方法UILocalNotification.我注意到例如邮件应用程序设置了主题的第一行,第二行和第三行是电子邮件正文的预览.如果主题超过1行,则会被截断.这适用于动态字体,因此无论在辅助功能中设置了什么文本大小.我试图取得相同的结果,但没有成功.

我尝试了什么

  1. 将字符串截断为特定长度
  2. 获取字符串大小与sizeWithAttributes同时使用preferedFontForTextStyle

所有这些解决方案部分工作,但对于某些文本大小/设备将失败

我正在寻找的方法是获取锁定屏幕的通知字体名称,大小,字距调整或任何其他必要的参数,以便能够UILocalNotification.alertBody在任何具有任何文本大小辅助功能设置的iOS设备上正确设置为1行文本.

我知道不同iOS版本的这些属性可能会有所不同,但iOS8对我来说已经足够了.

谢谢

Swi*_*ect 3

让操作系统进行布局

您将得到的最接近的结果是猜测。您可以使用

"\n"
Run Code Online (Sandbox Code Playgroud)

强制回车,但您不确定何时使用它。

iOS 不支持让您提前知道通知将到达的屏幕尺寸或方向。

你正面临着这样的横幅:

横幅不显示localNotification.alertTitle

2 个通知横幅,纵向和横向

然后争分夺秒,可以这么说:

您提前创建通知。它们是本地的这一事实并没有理由知道未来会发生什么:据您所知,您可能会安排从现在起 1 个月后的时间,并且用户可能已经更新了操作系统,导致应用新的字体或布局限制。

换句话说,这个问题的答案是: 您需要在 Apple Computer 工作并在显示通知之前获得本地回调,但截至目前,这还不是一个选项。

通知中心


结论

使用 alertTitle alertBody,可能到处散布 来\n强制新行。

// Use '\n' to force newline
localNotification.alertBody = "Alert fired.\nWas set for ..."
Run Code Online (Sandbox Code Playgroud)