当前位置: 首页 > news >正文

河南安阳网站建设网站主要功能

河南安阳网站建设,网站主要功能,WordPress 视频cdn,简述网站建设优劣的评价标准在一次开发过程中#xff0c;发现带有行间距的富文本计算高度#xff0c;会有不准确的情况#xff0c;富文本内容明明很长#xff0c;但是计算出的高度只有不到20像素#xff0c;导致整个cell的高度计算异常。 需求上是文字固定宽度#xff0c;最多显示3行#xff0c;超…在一次开发过程中发现带有行间距的富文本计算高度会有不准确的情况富文本内容明明很长但是计算出的高度只有不到20像素导致整个cell的高度计算异常。 需求上是文字固定宽度最多显示3行超过3行尾部打点展示。按照需求设置了尾部打点 paraStyle.lineBreakMode .byTruncatingTail 然后计算富文本的大小。 let range NSRange(location: 0, length: introduce.count) var att NSMutableAttributedString(string: introduce) let paraStyle NSMutableParagraphStyle() paraStyle.lineSpacing 4 att.addAttribute(.font, value: UIFont.systemFont(ofSize: 14), range: range) // 计算内容高度 let screenWidth UIScreen.main.bounds.size.width let maxSzie CGSizeMake(screenWidth-40, CGFLOAT_MAX)// 换行模式byClipping paraStyle.lineBreakMode .byTruncatingTail att.addAttribute(.paragraphStyle, value: paraStyle, range: range) size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).size print(使用byTruncatingTail计算size , size)这时候算出来的size高度只有17像素真实显示到屏幕上Label的高度是58像素。导致整体cell的高度计算错误。 后来发现先将换行模式改为paraStyle.lineBreakMode .byWordWrapping 在计算高度是正确的。于是把所有的换行模式都逐个测试看看到底是什么情况。 func getTextAttributed(_ introduce: String) - NSAttributedString {let range NSRange(location: 0, length: introduce.count)var att NSMutableAttributedString(string: introduce)let paraStyle NSMutableParagraphStyle()paraStyle.lineSpacing 4att.addAttribute(.font, value: UIFont.systemFont(ofSize: 14), range: range)// 计算内容高度let screenWidth UIScreen.main.bounds.size.widthlet maxSzie CGSizeMake(screenWidth-40, CGFLOAT_MAX)// 换行模式byWordWrappingparaStyle.lineBreakMode .byWordWrappingatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)var size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).sizeprint(使用byWordWrapping计算size , size)// 换行模式byCharWrappingparaStyle.lineBreakMode .byCharWrappingatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).sizeprint(使用byCharWrapping计算size , size)// 换行模式byClippingparaStyle.lineBreakMode .byClippingatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).sizeprint(使用byClipping计算size , size)// 换行模式byTruncatingHeadparaStyle.lineBreakMode .byTruncatingHeadatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).sizeprint(使用byTruncatingHead计算size , size)// 换行模式byClippingparaStyle.lineBreakMode .byTruncatingTailatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).sizeprint(使用byTruncatingTail计算size , size)// 换行模式byClippingparaStyle.lineBreakMode .byTruncatingMiddleatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).sizeprint(使用byTruncatingMiddle计算size , size)return att } 测试后发现系统的5个枚举中只有 byWordWrapping和byCharWrapping 计算准确带有截断方式的case计算都是错误的。 case byWordWrapping 0 // Wrap at word boundaries, defaultcase byCharWrapping 1 // Wrap at character boundariescase byClipping 2 // Simply clipcase byTruncatingHead 3 // Truncate at head of line: ...wxyzcase byTruncatingTail 4 // Truncate at tail of line: abcd...case byTruncatingMiddle 5 // Truncate middle of line:  ab...yz 好吧系统这个样子我们也没有办法最后采用的方式 先用 byWordWrapping 计算高度 高度计算完成在修改换行模式paraStyle.lineBreakMode .byTruncatingTail 返回富文本 func getTextAttributed(_ introduce: String) - NSAttributedString {let range NSRange(location: 0, length: introduce.count)let att NSMutableAttributedString(string: introduce)let paraStyle NSMutableParagraphStyle()paraStyle.lineSpacing 4att.addAttribute(.font, value: UIFont.systemFont(ofSize: 14), range: range)// 计算内容高度let screenWidth UIScreen.main.bounds.size.widthlet maxSzie CGSizeMake(screenWidth-40, CGFLOAT_MAX)// 换行模式byWordWrappingparaStyle.lineBreakMode .byWordWrappingatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)var size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).sizeprint(使用byWordWrapping计算size , size)// 换行模式byTruncatingTailparaStyle.lineBreakMode .byTruncatingTailatt.addAttribute(.paragraphStyle, value: paraStyle, range: range)// size att.boundingRect(with: maxSzie, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil).size// print(使用byTruncatingTail计算size , size)return att }
http://www.pierceye.com/news/244621/

相关文章:

  • 电子商务网站开发进什么科目网络推广怎么学
  • 网站做百度推广要多少钱电商网站制作
  • 交互设计网站推荐网上推广公司
  • 网站建设数据库搭建网站开发外包维护合同
  • 大网站怎样选域名ui设计的就业前景
  • 青岛网站推广外包推广平台怎么做
  • 陇南建设网站网站建设大作业选题
  • 外包做的网站 需要要源代码吗福建省法冶建设知识有奖网站
  • 设计网站价格表dns解析失败登录不了网站
  • 代理网址网站与做机器人有关的网站
  • 优惠卷网站怎么做推广歌手网站建设
  • 网站服务器开发西安app软件开发公司
  • 化妆品产品的自建网站哟哪些怎么做提升网站转化率
  • 上海餐饮网站建设百度本地推广
  • 全返网站建设做pc端网站信息
  • 做团购网站需要什么网站建设与管理好处
  • 厦门seo优泰安网站seo推广
  • 做网站如何盈利建站优化信息推广
  • 大气的网站首页网络推广公司优化客
  • 网站建设要经历哪些步骤电商仓储代发招商合作
  • 网站开发如何搭建框架潍坊网站建设公司
  • 免费网页制作网站建设2015年做啥网站致富
  • 个人网站制作基本步骤江阴网站的建设
  • 英文网站名需要斜体吗宁波seo外包费用
  • 网站设计价格公司门户网站建设
  • wordpress如何修改文章路径哈尔滨个人优化排名
  • 拓者设计吧网站科技基金
  • 有专门下载地图做方案的网站吗家装公司报价
  • 阿里域名注册网站阿里云建站保证销售额
  • 三北防护林体系建设网站培训班学员培训心得