用label实现自适应宽度的方法
2024-08-21 01:01:46
要实现图中 关键字 的实现可用下面代码
- (void)initLayout { self.keywordLabel = [[UILabel alloc] init]; self.keywordLabel.textColor = [UIColor grayColor]; self.keywordLabel.font = [UIFont systemFontOfSize:]; self.keywordLabel.text = @"关键字:"; [self.contentView addSubview:self.keywordLabel]; [self.keywordLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.contentView).offset(); make.left.equalTo(self.contentView).offset(); make.width.mas_offset(); }]; self.buttonArray = @["].mutableCopy; ; ; i < self.buttonArray.count; i++) { // 创建button UIButton *button = [[UIButton alloc] init]; [self.arr addObject:button]; // 背景颜色 button.backgroundColor = [UIColor orangeColor]; // 字 [button setTitle:self.buttonArray[i] forState:UIControlStateNormal]; button.titleLabel.textAlignment = NSTextAlignmentCenter; button.titleLabel.font = [UIFont systemFontOfSize:]; // 计算宽度 CGFloat width = [SmallTools textWidthWithText:self.buttonArray[i] font:[UIFont systemFontOfSize:]]; ) { CGFloat upWidth = [SmallTools textWidthWithText:self.buttonArray[i - ] font:[UIFont systemFontOfSize:]]; UIButton *arrButton = self.arr[i - ]; > [UIScreen mainScreen].bounds.size.width) { button.frame = CGRectMake(, j * + , width + , ); j++; }else { button.frame = CGRectMake( arrButton.frame.origin.x + upWidth + , * (j - ) + , width + , ); } [self.contentView addSubview:button]; } else { button.frame = CGRectMake(, , width + , ); [self.contentView addSubview:button]; } } _numberOfButton = j; }
SmallTools.h
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface SmallTools : NSObject // 根据输入尺寸修改图片大小,并返回UIImage + (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size; // 声明类方法用来计算文本高度 + (CGFloat)textHeightWithText:(NSString *)text font:(UIFont *)font; // 声明类方法用来计算图片的高度 + (CGFloat)imageHeightWithImage:(UIImage *)image; // 声明类方法用来计算文本宽度 + (CGFloat)textWidthWithText:(NSString *)text font:(UIFont *)font; @end
SmallTools.m
#import "SmallTools.h" @implementation SmallTools + (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{ UIGraphicsBeginImageContext(size); [img drawInRect:CGRectMake(, , size.width, size.height)]; UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return scaledImage; } // 计算文本高度 + (CGFloat)textHeightWithText:(NSString *)text font:(UIFont *)font { // iOS7.0中求文本高度的方法,返回一个CGRect的高度 // 第一个参数 CGSize size = CGSizeMake([UIScreen mainScreen].bounds.size.width, ); // 第二个参数:设置以行高为单位 CGRect rect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : font} context:nil]; return rect.size.height; } // 计算图片高度 + (CGFloat)imageHeightWithImage:(UIImage *)image { CGFloat width = image.size.width; CGFloat height = image.size.height; // float scile = height / width; // // float screenH = [UIScreen mainScreen].bounds.size.width; NSLog(@"%f", width); // return scile * screenH; return height / width * [UIScreen mainScreen].bounds.size.width; } // 计算文本高度 + (CGFloat)textWidthWithText:(NSString *)text font:(UIFont *)font { // iOS7.0中求文本高度的方法,返回一个CGRect的高度 // 第一个参数 CGSize size = CGSizeMake(, ); // 第二个参数:设置以行高为单位 CGRect rect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : font} context:nil]; return rect.size.width; } @end
代码多谢我家黑妹的帮助
最新文章
- Difference Between HashMap and IdentityHashMap--转
- IOS 如何隐藏tabbar
- PDF转换成二进制字符串写入 HTTP 输出流
- Linux内核里的DebugFS
- oracle 数据库学习
- CodeForces 685B Kay and Snowflake
- linux 自动备份脚本
- chorme浏览器的Access-Control-Allow-Origin拦截限制
- Wireshark理解TCP乱序重组和HTTP解析渲染
- java读取文件乱码
- redis学习资料
- 分组\聚合\F\Q查询
- php添加pdo_mysql.so的扩展
- 【数据结构】约瑟夫问题 C语言链表实现
- Java基础语法 第4节 常见软件安装-Mysql和SQLyog
- MySQL事物系列:2:事物的实现
- VMware vCenter Server 6.5.0 U1g
- Dropping water balloons (入门dp)
- Linq To Object多字段组合唯一校验
- OC property(声明)