设置UIButton最多显示几行《二》
2016-07-04 10:35
543 查看
我是一个iOS开发。最近偏爱使用UIButton控件。
第一篇《用UIButton做出cell的点击效果》提到的需求为:“界面的某些内容点击出现背景色,触发点击事件,点击后背景色消失”,加上附加需求“内容最多展示三行,大于三行的,在三行末尾,显示...”,且需求上标出了行距。
当遇见此类需求,可能,不会青睐UIButton,选择自己封装UILabel,或第三方的来实现。我下面给出我的一种思路,用UIButton实现,抱砖引玉啦。
我觉得难点有两个,难点一个是,“...”显示在末位。因为我之前只是惯用语UIButton的部分常用属性,所见到的“...”都是放在中间的。开始自我设计了一些方案,能够实现,但都不能准确定位三行的末尾。原因是内容可能是汉子,字符串,数字等的不同组合。后来找到了UIButton的titleLabel的lineBreakMode设置为NSLineBreakByTruncatingTail,轻松搞定了。
难点二是,当内容很多时,如何准确的算出三行高度。借用了第三方TTTAttributedLabel中方法:
//第一个参数,是将要计算高度的富文本字符串。第二个参数是,允许的最大size。第三个参数是,允许的最大行数
+ (CGSize)sizeThatFitsAttributedString:(NSAttributedString *)attributedString
withConstraints:(CGSize)size
limitedToNumberOfLines:(NSUInteger)numberOfLines
从方法的参数入手,需要先创建富文本字符串。通过设置NSMutableParagraphStyle对象,设置字号,字体,行距,和lineBreakMode,创建特定格式的富文本字符串。在传入上述方法中。设置第三个参数为3和size参数,即可得到制定行数的高度。
用- (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(UIControlState)state方法,来加载富文本字符串,并设置UIButton的titleLabel.numberOfLines为3。
需要注意的是,lineBreakMode在计算高度时,值为:NSLineBreakByWordWrapping。在UIButton上显示时,值为:
NSLineBreakByTruncatingTail。在加载富文本字符串时,需要设置UIButton的titleLabel.numberOfLines。
第一篇《用UIButton做出cell的点击效果》提到的需求为:“界面的某些内容点击出现背景色,触发点击事件,点击后背景色消失”,加上附加需求“内容最多展示三行,大于三行的,在三行末尾,显示...”,且需求上标出了行距。
当遇见此类需求,可能,不会青睐UIButton,选择自己封装UILabel,或第三方的来实现。我下面给出我的一种思路,用UIButton实现,抱砖引玉啦。
我觉得难点有两个,难点一个是,“...”显示在末位。因为我之前只是惯用语UIButton的部分常用属性,所见到的“...”都是放在中间的。开始自我设计了一些方案,能够实现,但都不能准确定位三行的末尾。原因是内容可能是汉子,字符串,数字等的不同组合。后来找到了UIButton的titleLabel的lineBreakMode设置为NSLineBreakByTruncatingTail,轻松搞定了。
难点二是,当内容很多时,如何准确的算出三行高度。借用了第三方TTTAttributedLabel中方法:
//第一个参数,是将要计算高度的富文本字符串。第二个参数是,允许的最大size。第三个参数是,允许的最大行数
+ (CGSize)sizeThatFitsAttributedString:(NSAttributedString *)attributedString
withConstraints:(CGSize)size
limitedToNumberOfLines:(NSUInteger)numberOfLines
从方法的参数入手,需要先创建富文本字符串。通过设置NSMutableParagraphStyle对象,设置字号,字体,行距,和lineBreakMode,创建特定格式的富文本字符串。在传入上述方法中。设置第三个参数为3和size参数,即可得到制定行数的高度。
用- (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(UIControlState)state方法,来加载富文本字符串,并设置UIButton的titleLabel.numberOfLines为3。
需要注意的是,lineBreakMode在计算高度时,值为:NSLineBreakByWordWrapping。在UIButton上显示时,值为:
NSLineBreakByTruncatingTail。在加载富文本字符串时,需要设置UIButton的titleLabel.numberOfLines。
相关文章推荐
- HDU 5412 CRB and Queries (Kth number 整体二分 动态转静态)
- Android View系统源码分析(十三)—— View.requestFocus() & ViewRoot.requestLayout()
- The project was not built due to "Could not delete ...".Fix the problem, then try refreshing this project and building it since it may be inconsistent.
- AR识别场景中UI被挡住的问题
- ugui基础控件button使用(二)
- build\tools\buildinfo.sh
- CharSequence类型
- UISplitViewController学习笔记(iOS8)
- Buileder(生成器)—对象创建型模式
- 关于如何在每个UITabBarItem上添加提示小红点
- 调试java GUI程序
- iOS -- UIButton上的文字、图片位置的调整
- Leetcode63. Unique Paths II
- Android的UI简要汇总,后期再更新
- confluent环境谨慎删除topic
- 5小时搞定谷歌原生自动化框架UiAutomator1.0
- 解放程序猿(媛)的双手—iOS UI自动化测试
- 解决在Filter中读取Request中的流后,后续controller或restful接口中无法获取流的问题
- UE4问题汇总
- 引入ueditor