zoukankan      html  css  js  c++  java
  • iOS UILabel两端对齐的实现(可包括中英文/数字)

    - (void)conversionCharacterInterval:(NSInteger)maxInteger current:(NSString *)currentString withLabel:(UILabel *)label
    {
        CGRect rect = [[currentString substringToIndex:1] boundingRectWithSize:CGSizeMake(200,label.frame.size.height)
                                         options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
                                      attributes:@{NSFontAttributeName: label.font}
                                         context:nil];
        
        
        NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:currentString];
        float strLength = [self getLengthOfString:currentString];
        [attrString addAttribute:NSKernAttributeName value:@(((maxInteger - strLength) * rect.size.width)/(strLength - 1)) range:NSMakeRange(0, strLength)];
        label.attributedText = attrString;
    }
    
    -  (float)getLengthOfString:(NSString*)str {
        
        float strLength = 0;
        char *p = (char *)[str cStringUsingEncoding:NSUnicodeStringEncoding];
        for (NSInteger i = 0 ; i < [str lengthOfBytesUsingEncoding:NSUnicodeStringEncoding]; i++) {
            if (*p) {
                strLength++;
            }
            p++;
        }
        return strLength/2;
    }

    注:中文字符长度1,英文字符及数字长度0.5

  • 相关阅读:
    程序员修炼之道:从小工到专家有感2
    3月13日
    第一次结对作业(2)
    3月12日
    3月11日
    第一次结对作业
    3月10日
    11月6日
    10月28日
    10月7日
  • 原文地址:https://www.cnblogs.com/liuliuliu/p/4769430.html
Copyright © 2011-2022 走看看