UITableView 中 UILabel 的大小类随机忽略

Posted

技术标签:

【中文标题】UITableView 中 UILabel 的大小类随机忽略【英文标题】:Size class for UILabel inside UITableView randomly ignored 【发布时间】:2016-07-02 08:57:39 【问题描述】:

我有一个UITableView,其中包含包含UILabels 的自定义单元格。标签的文字大小在 iPhone 和 iPad 上应该是不同的,所以我为常规尺寸类设置了不同的字体in interface builder。

问题是有时在 iPad 上的字体大小不受尊重,UILabel 以小文本大小显示(来自 iPhone 的那个)。此外,常规大小类的字体大小为ignored randomly for some table view cells。

【问题讨论】:

【参考方案1】:

我认为您可以使用此代码来识别设备大小:

 #define iosVersionGreaterThanOrEqualTo(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

+(NSString*)deviceSize 

CGFloat screenHeight = 0;

if (iOSVersionGreaterThanOrEqualTo(@"8")) 
  screenHeight = MAX([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width);
else
  screenHeight = [[UIScreen mainScreen] bounds].size.height;

if (screenHeight == 480)
  return "Screen 3.5 inch";
else if(screenHeight == 568)
  return "Screen 4 inch";
else if(screenHeight == 667)
  if ([UIScreen mainScreen].scale > 2.9) return Screen5Dot5inch;
    return  "Screen 4.7 inch";
else if(screenHeight == 736)
  return "Screen 5.5 inch";
else
  return "UnknownSize";

【讨论】:

【参考方案2】:

根据我的经验,根据大小类别指定字体并不可靠。我经常做的是将字体大小设置为适合最大尺寸类别(即 iPad)的大小,然后将自动收缩中的字体缩小到适合最小尺寸类别(即 iPhone)的比例。

【讨论】:

我有一个类似的问题,我默认保留 iPad 的字体大小并使用 iPhone 的大小类(我不得不将它分别用于 iPhone 纵向和横向,因为没有单一大小一起定义“纵向和横向的所有 iPhone”的类)。 @Szymon 让我知道这是否适合你。 实际上我是通过代码为 iPad 设置字体大小,效果最好。 @stuti 我很想在不久的将来尝试您的解决方案。 @stuti 看起来您的解决方案运行良好。谢谢。

以上是关于UITableView 中 UILabel 的大小类随机忽略的主要内容,如果未能解决你的问题,请参考以下文章

如何从动态 UITableView 单元格中获取 UILabel 的大小?

如何将UIImage设置为UITableView Cell,根据我在UILabel中输入的文本动态计算单元格高度?

更改 UIView 框架大小不会更改 UITableview 框架原点 y

如何将 UIImage 设置为 UITableView Cell,它根据我在 UILabel 中输入的文本动态计算单元格高度?

根据 UILabel 动态调整 uitableViewCell 大小(带段落间距)

UIStackView 中的 UILabel