gpt4 book ai didi

ios - 使用 iOS 7 中的动态类型,我如何考虑更高级的布局问题,例如标签/ View 之间的间距?

转载 作者:可可西里 更新时间:2023-11-01 03:34:31 25 4
gpt4 key购买 nike

我正在更新我的应用程序以支持 iOS 7 中的动态类型。根据系统设置调整文本大小相对容易,但因为我在 UITableView 和单元格的上下文中使用它其中有多个 UILabel,文本大小不是我唯一需要担心的事情。如果文本变长,单元格的高度也应该变大;如果文本变小,单元格的高度也应该变小。

此外,如果它变小,与最大尺寸类型相比,项目之间的间距显然应该更小(因为在小尺寸下,它们之间的空间会很大)。

当用户更改其动态字体大小时,如何更改更高级的布局问题,例如这些问题?


现在,我正在做一些非常丑陋但几乎不起作用的事情。我查看其中一个标签的高度,并根据其大小缩放常量。但它非常不精确,例如,当前文本大小下 UILabel 高度的 110% 被用作元素之间的填充不一定普遍有效。

所以这就是我在那个例子中所做的:

    CGRect articleTitleRect = [article.title boundingRectWithSize:CGSizeMake(CGRectGetWidth(self.contentView.bounds) - 29, MAXFLOAT)
options:NSStringDrawingUsesFontLeading
attributes:@{ NSFontAttributeName: [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline] }
context:nil];
self.urlConstant.constant = articleTitleRect.size.height / 5;
self.previewConstant.constant = articleTitleRect.size.height / 5;

(基本上找出标签的高度是多少,然后使用它的百分比来推断间距。同样,非常不精确并且不能很好地通用。)

我考虑做的另一件事是检查当前 preferredFontForTextStyle: 在磅值上等于什么,并针对特定值对界面调整/间距进行硬编码。这工作得更好一些,但它似乎仍然不是 Apple 所想的最佳选择,因为它不是非常动态(例如,如果他们添加另一种字体大小,它就会中断)并且你几乎在嗅探他们没有的值(value)'不会让你失望(这让它看起来很老套)。


那么像 Tweetbot 3(现在使用动态类型来设置它们的 UITableViewCell 元素)这样的应用程序如何使它们的 UI 在不同的动态类型大小上看起来做得很好?执行此操作的最佳方法是什么?老实说,似乎没有关于该主题的教程。

最佳答案

这是你必须自己做的事情,但 iOS 已经为你提供了使用 TextKit 所需的工具。 Test Programming Guide里面其实有很多文档.

例如,在 Working with Font Objects节,UIContentSizeDidChangeNotification ,它会通知您的应用程序动态类型值已更改,并使用包含新值的 userInfo 字典。这是您要进行的更改的入口点。例如,如果新值为UIContentSizeCategoryAccessibilityMedium,则两个标签之间的距离为10点,但如果新值为UIContentSizeCategoryAccessibilityLarge,则可以设置为15。当然我只是在编造值(value),找出最有效的方法是你必须通过反复试验来做的事情。然而,一旦您确定了正确的距离,确保一切正常工作应该不会超过十几行代码。

另请查看 UIFontDescriptor ,尤其是该引用底部的常量。它们让您可以访问几乎所有可以想象到的字体属性和特征。您可以使用它来“构建”具有自定义属性的自己的字体。如果您想要那样做,将需要更多的代码,但 TextKit 为您提供了许多不同的 API,以在屏幕上显示文本。

关于ios - 使用 iOS 7 中的动态类型,我如何考虑更高级的布局问题,例如标签/ View 之间的间距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19697408/

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