经常遇到的需要对UILabel处理的几个问题

  • 计算label中的字符所占宽和高
  • iOS7之后
- (CGSize)boundingRectWithSize:(CGSize)size text:(NSString *)text fount:(UIFont *)font 
{
    NSDictionary *attribute = @{NSFontAttributeName: font};
    CGSize retSize = [text boundingRectWithSize:size options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
    return retSize;
}
  • iOS6
-(CGSize)sizeWithString:(NSString *)text size:(CGSize)size font:(UIFont)font
{
    CGSize size = [text sizeWithFont:font constrainedToSize:size lineBreakMode:NSLineBreakByWordWrapping];
    return size;
}
  • 设置Label中文字的行间距
+ (void)labelLineSpace:(UILabel *)label text:(NSString *)text Value:(CGFloat)value
{
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineSpacing:value];
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
    label.attributedText = attributedString;
    [label sizeToFit];
}
  • Label的边框宽度粗细不一致处理
  • 如果设置了label.layer.border.width 为某一值,在不能的屏幕上显示的效果可能完全不一样,比如我之前做项目是设置了 border.width = 0.6,然后在6s上显示时粗细不一致,下面这方法可以解决这个问题。
CGFloat scale = [[UIScreen mainScreen] scale];
CGFloat width = scale > 0.0 ? 1.0 / scale : 1.0;
[self.layer setBorderWidth:width];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容