用label实现自适应宽度的方法
要实现图中 关键字 的实现可用下面代码
- (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
代码多谢我家黑妹的帮助
用label实现自适应宽度的方法的更多相关文章
- storyboard xib下label怎么自适应宽度高度
先看需求:两个Label,要求蓝色的label紧跟在红色的label文字后面 ok首选正常添加约束 红色的Label添加宽度,高度,左边,上边约束 蓝色的Label添加宽度,高度,左边,和红色的水平 ...
- iOSstoryboard xib下label怎么自适应宽度高度
先看需求:两个Label,要求蓝色的label紧跟在红色的label文字后面 ok首选正常添加约束 红色的Label添加宽度,高度,左边,上边约束 蓝色的Label添加宽度,高度,左边,和红色的水平对 ...
- css布局:左边固定宽度,右边自适应宽度或右侧固定,左侧自适应三种方法
方法一:浮动布局 这种方法我采用的是左边浮动,右边加上一个margin-left值,让他实现左边固定,右边自适应的布局效果 HTML Markup <div id="left" ...
- 从三栏自适应宽度布局到css布局的讨论
如何实现一个三栏自适应布局,左右各100px,中间随着浏览器宽度自适应? 第一个想到的是使用table布局,设置table的宽度为100%,三个td,第1个和第3个固定宽度为100px,那么中间那个就 ...
- css自适应宽度高级写法:一行多列~~~某些列的宽度是固定值
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxgAAACdCAIAAAC4iknFAAAgAElEQVR4nO2d3VsTV7uH51/wqhKotn
- JS实现自适应宽度的Tag切换
效果体验:http://hovertree.com/texiao/js/3.htm 该效果使用纯JavaScript代码,实现TAB页切换效果,TAB标签根据内容自适应宽度,点击TAB标签切换内容页. ...
- 根据显示的字符多少来做Label的自适应高度
根据显示的字符多少来做Label的自适应高度 UILabel *label = [[UILabel alloc]init]; NSString *string = @"其实,经年过往,每个人 ...
- [Winform]DataGridView列自适应宽度
引言 在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属性,默认情况下是不会自适应宽度的,你想查看某项的数据,就不得不将标题栏拖来拖去,挺烦的. 方法 ...
- 关于jqGrid组件表格无法自适应宽度问题
今天生成了一个4列的表格,但是无法自适应宽度,使用 $(window).resize(function(){ $(window).unbind("onresize"); $(&qu ...
随机推荐
- (简单) POJ 3264 Balanced Lineup,RMQ。
Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...
- 将UTF8编码转化为中文 - NSString方法
方法一: 代码如下,如有更好的方法 麻烦贴出来,这个方法是通过webview进行解码的 UIWebView *web = [[UIWebView alloc] init]; NSString *tsw ...
- android中广播的使用
广播消息机制用于进行系统级别的消息通知,每个应用程序可以对感兴趣的广播进行注册,并且将接收广播的方法定义在广播接收器中(Broadcast). 广播可以分为标准广播和有序广播. 注册广播的方法可以动态 ...
- 【转】amCharts,一款值得推荐的Flash charts图组件
今天无意中看到一个利用Flash生成chart图的工具:amCharts,我一开始就觉得这些chart图非常眼熟,它的显示样式跟监控宝的是完全一样的,我通过查看网页的源文件,才知道原来监控宝就是用的这 ...
- 企业建站http://www.douco.com/
http://www.douco.com/ 非常方便的,搭建简单的企业网站
- 谈谈MySQL数据表的类型(转)
谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...
- JDBC executeBatch 抛出异常停止
进行批量更新的时候发现: addBatch(sql); executeBatch 抛出异常后,剩余的sql没有更新,即出现异常之前的都入库了,异常之后即使有可执行sql都不会执行. 百度资料后了解:这 ...
- Struts2标签遍历List<Map<String,String>>
<s:if test="resultList != null && resultList.size() > 0"> <s:iterator ...
- BZOJ1119[POI2009]SLO && BZOJ1697[Usaco2007 Feb]Cow Sorting牛排序
Problem J: [POI2009]SLO Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 622 Solved: 302[Submit][Sta ...
- 2.4. 属性(Core Data 应用程序实践指南)
属性的名称必须以小写字母开头. 添加 name 和 quantity 属性.