iOS UILabel两端对齐的实现(可包括中英文/数字)
2024-10-14 06:42:54
- (void)conversionCharacterInterval:(NSInteger)maxInteger current:(NSString *)currentString withLabel:(UILabel *)label
{
CGRect rect = [[currentString substringToIndex:] boundingRectWithSize:CGSizeMake(,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 - )) range:NSMakeRange(, strLength)];
label.attributedText = attrString;
} - (float)getLengthOfString:(NSString*)str { float strLength = ;
char *p = (char *)[str cStringUsingEncoding:NSUnicodeStringEncoding];
for (NSInteger i = ; i < [str lengthOfBytesUsingEncoding:NSUnicodeStringEncoding]; i++) {
if (*p) {
strLength++;
}
p++;
}
return strLength/2;
}
注:中文字符长度1,英文字符及数字长度0.5
最新文章
- css3实现翻页卡片
- TCP协议学习记录 (三) Ping程序 RR选项 记录路由hop
- [转]Oracle数据泵的使用
- 用 CSS 做轮播图
- Windows操作 - Photoshop为图片添加透明立体水印
- ubuntu 12.04 安装 nginx+php+mysql web服务器
- Unix/Linux环境C编程入门教程(39) shell命令之系统管理
- Working——流程关系状态表
- Spring Cloud Netflix多语言/非java语言支持之Spring Cloud Sidecar
- mysql将字符串转化为数字
- DAY22、面向对象
- eclise开发设置
- 移动端开发注意事项——meta、rem以及弹性盒
- winform窗体退出
- axios 用法简介(转载)
- CSS margin合并
- Idea 12配置SPring MVC 和Tomcat Server
- php 允许浏览器跨域访问web服务端的解决方案
- servlet路径获取
- Nutch1.2 的安装与使用