Swift编程程序员牛叉的demo

lebal特殊字符的自动换行

2017-07-23  本文已影响305人  七秒记忆的鱼儿

今天被问及,如果在label自动换行的时候,碰到特殊的字符串时候,我不想特殊字符串换行分开,该如何实现???

问题图片

实在想不起来怎么实现了,不行就按照步骤2的实现方法试试吧,刚好这个时候,妹子来电话了,和妹子闲扯了半小时,挂断电话,没办法,想吧,写吧,终于让我想到一个简单的方法

结论
想不起来,就和妹子聊聊天,总有想起来的时候,不然多浪费青春年华!!!

Demo如下

    let label = UILabel();
    var text = "七秒记忆鱼儿注,转发请备注七秒注,么么哒!";
    label.numberOfLines = 0;
    label.font = UIFont.systemFont(ofSize: 15);
    let size = text.wj_computedTextHeight(font: 15, size: CGSize.init(width: view.bounds.width, height: CGFloat(MAXFLOAT)));
    var text1 = text;
    text.append("七秒最帅");
    let size1  = text.wj_computedTextHeight(font: 15, size: CGSize.init(width: view.bounds.width, height: CGFloat(MAXFLOAT)));
    if size.height != size1.height {
        text1.append("\n");
        text1.append("七秒最帅");
        text = text1;
    }
    label.text = text;
    label.frame = CGRect.init(x: 10, y: 64, width: size1.width, height: size1.height);
    view.addSubview(label);

抽取的方法

/// 计算文字的size
///
/// - parameter font: 大小
/// - parameter size: 文本的打下
///
/// - returns: 返回size
func wj_computedTextHeight(font:CGFloat,size:CGSize)->CGSize{
    print(self,size);
    let str = self as NSString;
    let maxSize = str.boundingRect(with: size, options:NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFont(ofSize: font)], context: nil).size
    
    return maxSize;
}

最终的效果

最终的效果
上一篇 下一篇

猜你喜欢

热点阅读