iOS 控制Label只显示一行半

/**
 控制显示一行半的方法

 @param originalContent 原内容
 @param labelWidth label宽度
 @return 展示的内容
 */
- (NSMutableAttributedString *)getSubContentWithOriginalContent:(NSMutableAttributedString *)originalContent andLabelWidth:(CGFloat)labelWidth{
    
    NSAttributedString *subContent = nil;
    CGFloat maxLength = labelWidth * 1.5;//设置字符串最大长度为一行半
    CGFloat length = 0;
    for(int i = 0; i < [originalContent length]; i++)
    {
        subContent = [originalContent attributedSubstringFromRange:NSMakeRange(i,1)];
        // 计算宽度
        CGSize size = [subContent boundingRectWithSize:CGSizeMake(MAXFLOAT, 0.0) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine  context:nil].size;
        
        
        length = length + size.width;
        
        //此处截取maxLength,根据需求设置
        if (length >= maxLength) {
            NSMutableAttributedString *resultString = [[NSMutableAttributedString alloc] initWithAttributedString:[originalContent attributedSubstringFromRange:NSMakeRange(0, i)]];
            NSAttributedString *att = [[NSAttributedString alloc] initWithString:@" ..." attributes:self.attributeStyle];
            [resultString appendAttributedString:att];
            return resultString;
        }
    }
    return originalContent;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容