大神,在使用您的扩展时遇到了几个问题,求助!!!
1.FFLabel长文本,用约束布局不能准确计算高度。 2.FFLabel偶尔会出现文字字体变小的情况。 3.FFLabel因为拦截了触摸事件,如果点击到不是高亮文字的区域,无法响应父控件的事件。
文字变小,需要在外部统一设置一下属性文本,这个不是FFLabel的问题,是传递的属性文本有问题,你可以试试看啊,这也应该是不能计算高的原因
关于高亮文本点击问题,我这两天看看,能不能处理一下哈
您好,大神: 我设置的字体是直接获取的label本身的font,字体变小是一个列表偶尔会出现一次,设置字体都是在懒加载里写死的。刚开始以为是转换表情字符的问题,我不转换表情了,还是一样的效果。这是效果图和代码:https://blog.6ag.cn/demo/1.jpg
截图访问 403 了,你在程序中没有使用 attributeString 吗?
截图403刷新一下页面就好了。程序中有使用属性字符串的,并且我用系统的Label显示正常。
把属性字符串的字体从头到位统一设置一下,然后再传递给 label 就好了
示例代码大概是这个样子的:
NSDictionary *attrDict = @{NSFontAttributeName: [UIFont systemFontOfSize:15]};
[attrStr setAttributes:attrDict range:NSMakeRange(0, attrStr.length)];
P.S. 截图还是没有刷出来啊
谢谢! 我刚又检查了一下。发现布局计算高度不准和字体大小改变是由于表情属性文本造成的,不是FFLabel造成的。。。 就差响应除高亮区域外的父控件交互了
找到问题就好,:D
大神,还有个问题。就是当遇到空字符串时,会越界崩溃的。
/// add line break mode
private func addLineBreak(attrString: NSAttributedString) -> NSMutableAttributedString {
let attrStringM = NSMutableAttributedString(attributedString: attrString)
var range = NSRange(location: 0, length: 0)
// 崩溃代码
var attributes = attrStringM.attributesAtIndex(0, effectiveRange: &range)
var paragraphStyle = attributes[NSParagraphStyleAttributeName] as? NSMutableParagraphStyle
if paragraphStyle != nil {
paragraphStyle!.lineBreakMode = NSLineBreakMode.ByWordWrapping
} else {
// iOS 8.0 can not get the paragraphStyle directly
paragraphStyle = NSMutableParagraphStyle()
paragraphStyle!.lineBreakMode = NSLineBreakMode.ByWordWrapping
attributes[NSParagraphStyleAttributeName] = paragraphStyle
attrStringM.setAttributes(attributes, range: range)
}
return attrStringM
}
额,这个我记住了,不过我现在机器的环境都是测试版,暂时没法提交修改后的 Swift 框架,过几天我改了提交一下哈,麻烦你现在外面自己判断一下