• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ocarol
博客园    首页    新随笔    联系   管理    订阅  订阅
使用Autolayout对多行文本Label进行布局,高度不准确的解决办法!

BUG描述:

    今天公司的项目中发现了一个BUG,大概给大家描述一下,tabbleView有一个tableFooterView,这个footView中有一个Label,是多行显示文本,程序用的是Autolayout自动布局,理论上不用操心高度的问题,但是测试发现,在6S Plus上label的文字能全部显示出来,而5S上底部有几行却没有显示出来,用UI调试工具看了下,是Label的高度不对,明显偏小了。


BUG分析:

   后来查资料发现问题是我的程序中,用masonry自动布局后,在返回footerView前,要设置footerView的高度,而高度是根据系统自动布局的方法计算而来:

 [footerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

这个方法对于需要注意一点:

如果是计算多行UILabel,并且width不是固定的话(自动布局适配屏幕就是不固定,写死的数值算固定),需要设置label的preferredMaxLayoutWidth属性,否则计算的结果会有偏差!

 


BUG解决:

lable.preferredMaxLayoutWidth = KScreenWidth;

 

设置了这个属性后,所有的文字就都能显示出来了!


另外科普一下:

UILayoutFittingCompressedSize  表示返回最小可能的值

UILayoutFittingExpandedSize    表示返回最大可能的值

 

posted on 2016-03-17 19:27  ocarol  阅读(664)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3