[BS-01] 根据字符串对象的参数自动计算用来显示该字符串的UI控件的宽和高
根据字符串对象的参数自动计算用来显示该字符串的UI控件的宽和高
1. 影响昵称Label的高和宽的因素: 字体和字号大小、文字多少、高度取决于是否固定了宽度(是否限制了最大的宽度和高度)
2. 使用字符串对象的boundingRectWithSize方法自动计算,该字符串对象显示时需要的的CGRect值
[字符串对象 boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil]
3. 还需确保这里计算的时候使用的字体大小和创建Label时设置的字体大小一致, 故使用一个宏来统一设置。
注意:iOS方法中关于attributes参数的写法都在UIKit/NSAttributedString.h头文件下,该头文件还引用了
Foundation/NSAttributedString.h(Foundation框架也有该头文件)
4. 举例: 根据昵称的文字计算昵称label的宽和高
//定义name字体宏
#define nameFont [UIFont systemFontOfSize:12]
//1. 创建显示文字块的Label
UILabel *lblName = [[UILabel alloc]init];
lblName.font = nameFont; //此处设置的字体需与用于自动计算的字体保持一致
//2. 根据文字块计算显示它的Label的CGSize
// 方法中attributes的参数: 字体字典
NSDictionary *fontDict = @{NSFontAttributeName : nameFont}; //在设置Label字体时也必须用12号系统字,所以定义宏#define nameFont [UIFont systemFontOfSize:12]
//根据文字参数计算显示Label的宽高
CGRect nameRect = [nameStr boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:fontDict context:nil]; //不限定最大宽高
//设置Frame
CGFloat nameW = nameRect.size.width;
CGFloat nameH = nameRect.size.height;
CGFloat nameX = 10;
CGFloat nameY = 10;
lblName.frame = CGRectMake(nameX, nameY, nameW, nameH);
//3. 添加label
[self.view addSubview:lblName];
[BS-01] 根据字符串对象的参数自动计算用来显示该字符串的UI控件的宽和高的更多相关文章
- 函数:引用file类对象及io类对象作为参数打印文本及显示文本
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; voi ...
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...
- JavaScript--String 字符串对象属性
访问字符串对象的属性length: stringObject.length; 返回该字符串的长度. var mystr="Hello World!"; var myl=mystr. ...
- 字符串对象-String
新建字符串对象 ① 直接赋值 ② 构造函数 ③ 转换函数 1 length 字符串对象属性 2 match() null 跟php中的preg_matc ...
- javascript中的字符串对象和数组对象
1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...
- javascript中的字符串对象
1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...
- JS对象 String 字符串对象定义字符串的方法就是直接赋值。比如: var mystr = "I love JavaScript!"
String 字符串对象 在之前的学习中已经使用字符串对象了,定义字符串的方法就是直接赋值.比如: var mystr = "I love JavaScript!" 定义mystr ...
- iOS中UIButton控件的用法及部分参数解释
在UI控件中UIButton是极其常用的一类控件,它的类对象创建与大多数UI控件使用实例方法init创建不同,通常使用类方法创建: + (id)buttonWithType:(UIButtonType ...
- C# winform窗体简单保存界面控件参数到xml
引用网上的 XMLHelper 地址 :https://www.cnblogs.com/chnboy/archive/2009/04/02/1427652.html 稍做修改 using System ...
随机推荐
- C# - 事物回滚
该功能依赖dbhelp.cs 传送门:http://www.cnblogs.com/CyLee/p/5324652.html 起始点,不能放在try语句中 this.DbHelp.BeginTrans ...
- 《Lucene实战(第2版)》 配书代码在IDEA下的编译方法
参考: hankcs http://www.hankcs.com/program/java/lucene-combat-2nd-edition-book-with-code-compiled-unde ...
- 一些Office 365的问题收集
1. 按照MS的最佳实践, 应该是先有本地域, 然后再有Office 365. 但是我们公司刚好相反, 于是按照前面的文章做完了硬关联, 但是现在发现对于那些原本就在Office 365上的用户的Pr ...
- HP StorageWorks MSL2024 Tape Libraries - Robotic Error Sub-Codes
Robotic error sub-codes Mechanical initialization failure 02 Connection to slave robotic failed 03 E ...
- MySQL5.7安装过程以及参数和设置说明
最近在讲MySQL课程,为了省事就在用MySQL5.5版本.因为win10不论32还是64都可以运行MySQL32位.可有很多使用者了解MySQL官网之后,去下载最新版的MySQL来使用,这点我不反对 ...
- CodeForces 86D Powerful array(莫队+优化)
D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...
- C#中的托管堆和堆栈
托管堆(Heap)和堆栈(Stack)是内存的逻辑划分. 栈 堆 连续性 连续 不连续 有序性 后进先出 无序 内存管理 操作系统自动释放 GC或人工 存放类型 值类型/引用 引用类型 注:内存格 ...
- linux 防火墙设置
防火墙的基本操作命令: 查询防火墙状态:[root@localhost ~]# service iptables status<回车> 停止防火墙:[root@localhost ~]# ...
- SQLQuery 实现别名映射
public List getQueryList(Map paramMap, int start, int maxResults) throws DataAccessException, Hibern ...
- nodejs express测试
1.页面请求 app.get('/list_user', function (req, res) { console.log("/list_user GET 请求"); //res ...