以字符进行截断,免得出现半个字符

-(CGSize)sizeUtilForTitle:(NSString *)title
{
    if (NSFoundationVersionNumber<=NSFoundationVersionNumber_iOS_6_1) {
        return [title sizeWithFont:self.titleLabel.font];
    }else{
        return [title sizeWithAttributes:@{NSFontAttributeName:self.titleLabel.font}];
    }
}
//以字符进行截断,免得出现半个字符

    CGSize size;
    NSString *tempString=nil;
    size = [self sizeUtilForTitle:title];
    CGSize titleSize = self.titleLabel.bounds.size;

    if (size.width>titleSize.width) {
        int firstCompare = 0;
        int compare = 0;
        int currentLength = 8;
        do {
            tempString = [title substringToIndex:currentLength];
            size = [self sizeUtilForTitle:tempString];
            compare = size.width<titleSize.width?-1:1;
            if (compare==0) {
                break;
            }
            
            if (firstCompare*compare>0) {
                currentLength-=firstCompare;
                continue;
            }else if (firstCompare*compare<0){
                currentLength+=firstCompare;
                break;
            }
            if (firstCompare==0) {
                firstCompare = compare;
                currentLength -=compare;
            }
            
        } while (YES);
        self.titleLabel.text = [title substringToIndex:currentLength];
        
    }else{
        self.titleLabel.text = title;
    }
对于单行文字,其实只要对UILabel只要设置numberOfLines大于1,并且lineBreakMode为NSLineBreakByCharWrapping,就可以自动做到以上效果了,以上处理显得有点多余,不过既然写了出来,就记录一下吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值