[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 ...
随机推荐
- php 过时的sql操作库(学习使用)
学习地址:http://www.imooc.com/video/2459 <?php /** * 连接数据库 * @return resource */ function connect(){ ...
- mysql 动态sql语句
; SET @ss = ' INSERT INTO prod_attr SELECT ? AS prod_id,A.* FROM ( SELECT 1 AS attr_id,\'中国出版社\' AS ...
- SQLHelper 简介
什么是SQLHelper SqlHelper是一个基于.NETFramework的数据库操作组件.组件中包含数据库操作方法,目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类 ...
- spring aop中的propagation的7种配置的意思
1.前言. 在声明式的事务处理中,要配置一个切面,即一组方法,如 <tx:advice id="txAdvice" transaction-manager="txM ...
- Redis 笔记与总结4 set 和 zset 类型
(一)set 类型 set 是集合是 string 类型的无序集合. set 元素最大可以包含(2 的 32 次方)个元素.set 的是通过 hash table 实现的,所以添加.删除和查找的复杂度 ...
- 使用phpstorm和xdebug实现远程调试
使用phpstorm和xdebug实现远程调试 2012-05-23 10:06:35 vs的断点调试功能很强大有木有,能查看所有变量有木有.php调试很麻烦有木有,echo,var_dump写得你想 ...
- ExtJS笔记5 Components
参考 :http://blog.csdn.net/zhangxin09/article/details/6914882 An Ext JS application's UI is made up of ...
- spring容器IOC创建对象<二>
问题?spring是如何创建对象的?什么时候创建对象?有几种创建方式?测试对象是单例的还是多例的 ?对象的初始化和销毁? 下面的四大模块IOC的内容了!需要深刻理解 SpringIOC定义:把对象的创 ...
- php--http与https的区别
在URL前加https://前缀表明是用SSL加密的.你的电脑与服务器之间收发的信息传输将更加安全. Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定. http和ht ...
- 玩儿了一下django User authentication
五一在家,VPN不能链接了,而项目在本地run的过程中,又需要链接公司的SSO server才能login.下雨,不想去公司,又不得不在家做task,只能想办法避开SSO login,以前知道djan ...