IOS UI Frame 相对位置调整 与优化方法 Height Width X Y 调整
不使用xib ,纯代码开发的过程中,动态UI 需要改对象的大小位置 反复使用CGRectMake 去 setFrame 非常低效耗时,而且 牵一发动全身.
以下整理出几个方法,方便动态布局
1.set 方法 重新布局
#import <Foundation/Foundation.h>
@interface HuofarUtils : NSObject
@end
CGRect CGRectSetWidth(CGRect rect, CGFloat width);
CGRect CGRectSetHeight(CGRect rect, CGFloat height);
CGRect CGRectSetSize(CGRect rect, CGSize size);
CGRect CGRectSetX(CGRect rect, CGFloat x);
CGRect CGRectSetY(CGRect rect, CGFloat y);
CGRect CGRectSetOrigin(CGRect rect, CGPoint origin); #import "HuofarUtils.h"
@implementation HuofarUtils
@end
CGRect CGRectSetWidth(CGRect rect, CGFloat width) {
return CGRectMake(rect.origin.x, rect.origin.y, width, rect.size.height);
}
CGRect CGRectSetHeight(CGRect rect, CGFloat height) {
return CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, height);
}
CGRect CGRectSetSize(CGRect rect, CGSize size) {
return CGRectMake(rect.origin.x, rect.origin.y, size.width, size.height);
}
CGRect CGRectSetX(CGRect rect, CGFloat x) {
return CGRectMake(x, rect.origin.y, rect.size.width, rect.size.height);
}
CGRect CGRectSetY(CGRect rect, CGFloat y) {
return CGRectMake(rect.origin.x, y, rect.size.width, rect.size.height);
} CGRect CGRectSetOrigin(CGRect rect, CGPoint origin) {
return CGRectMake(origin.x, origin.y, rect.size.width, rect.size.height);
}
2. Get 方法 获取
CGRectGetHeight /Width /X/ Y 系统自带
3. 以UILabel 为例 获取动态高度 或 宽度
(1)宽度固定 获取 lab 动态高度
- (CGFloat)heightForTitle:(NSString *)title
{//momentWith 静态宽度
CGRect tmpRect = [title boundingRectWithSize:CGSizeMake(momentWidth, )
options:NSStringDrawingUsesLineFragmentOrigin //可选的计算参考条件
attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:16],NSFontAttributeName, nil]
context:nil];
return tmpRect.size.height;
}
(2)高度固定获取 lab 动态宽度
- (CGFloat)widthForTitle:(NSString *)title
{
NSDictionary *attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:]}; CGSize size = [title boundingRectWithSize:CGSizeMake(MAXFLOAT, )
options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
attributes:attribute context:nil].size; return size.width ;
}
以上两个方法都差不多 就是看谁恒定 另一个就是动态得到的value
IOS UI Frame 相对位置调整 与优化方法 Height Width X Y 调整的更多相关文章
- TableVie优化方法和优化机制
1,UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染) (1)缓存高度:当我们创建frame模型的时候,计算出来cell的高度的时候,我们可以将cell的高度缓存 ...
- iOS界面跳转的一些优化方案
原文地址: http://blog.startry.com/2016/02/14/Think-Of-UIViewController-Switch/ iOS界面跳转的一些优化方案 App应用程序开发, ...
- iOS开发中几个重要的方法
iOS开发中几个重要的方法: 加载类到内存,程序刚启动的时候调用,调用在main函数之前 1.+(void)load{ } 初始化类,类第一次使用的时候调用一次 2.+(void)initialize ...
- [iOS UI进阶 - 6.0] CALayer
A.基本知识 1.需要掌握的 CALayer的基本属性 CALayer和UIView的关系 position和anchorPoint的作用 2.概念 在iOS中,你能看得见摸得着的东西基本上都是U ...
- [iOS UI进阶 - 3.0] 触摸事件的基本处理
A.需要掌握和练习的 1.介绍事件类型2.通过按钮的事件处理引出view的事件处理3.响应者对象 --> UIResponder --> UIView4.view的拖拽* 实现触摸方法,打 ...
- iOS对UIViewController生命周期和属性方法的解析
目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实 ...
- 【iOS开发】iOS对UIViewController生命周期和属性方法的解析
iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...
- [转]探索 Android 内存优化方法
前言 这篇文章的内容是我回顾和再学习 Android 内存优化的过程中整理出来的,整理的目的是让我自己对 Android 内存优化相关知识的认识更全面一些,分享的目的是希望大家也能从这些知识中得到一些 ...
- 提升网速的路由器优化方法(UPnP、QoS、MTU、交换机模式、无线中继)
在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...
随机推荐
- Android EditText 输入password是否可见
设置password不可见 etAfter.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 设置password可见 etA ...
- 【Excle数据透视表】如何为数据透视表应用样式
如下数据透视表样例,如何为该数据透视表设置样式呢? 步骤 单击数据透视表区域的任意单元格→数据透视表工具→设计→数据透视表样式→打开下拉箭头即可任意选择
- Oracle 创建表空间与用户
/* 说明:若已经存在相应的用户和表空间,则需要先删除相应的用户和表空间 然后再全部重新建立 */ --删除用户 drop user XNZQWEIXIN cascade; --删除表空间 drop ...
- Redis与Reactor模式
Redis与Reactor模式 Jan 9, 2016 近期看了Redis的设计与实现,这本书写的还不错,看完后对Redis的理解有非常大的帮助. 另外,作者整理了一份Redis源代码凝视,大家能够c ...
- Android XMPP 即时通讯
0 http://blog.csdn.net/lnb333666/article/details/7471292 0.1 http://www.cnblogs.com/charley_yang/arc ...
- Rabbitmq消息队列(一) centos下安装rabbitmq
1.简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的 ...
- 复习mybatis框架(一)----映射文件
参考博主的文章,尊重原创:https://blog.csdn.net/qq_35246620/article/details/54837618 一.给出映射文件 Mapper.xml 的总结: ① 设 ...
- JSTL JSP页面推断某个cookie的值和读取值....
<c:if test="${cookie['woshop'].value eq '1'}"> <div> ...
- spring download
http://maven.springframework.org/release/org/springframework/spring/
- ConcurrentHashMap的使用和原理
呵呵呵,原理nmb. HashTable,HashMap,ConcurrentHashMap 当你作为一个菜鸡的时候,别人就会那这个来问你. 为什么要用ConcurrentHashMap,因为Hash ...