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, 2000)
                                               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:16]};

    CGSize size = [title boundingRectWithSize:CGSizeMake(MAXFLOAT, 30)
                                      options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                   attributes:attribute context:nil].size;

    return size.width ;
}

以上两个方法都差不多 就是看谁恒定 另一个就是动态得到的value

时间: 2024-10-14 07:39:48

IOS UI Frame 相对位置调整 与优化方法 Height Width X Y 调整的相关文章

IOS设置frame的时候经常要先取出来-&gt; 设置-&gt; 最后再赋值回去,非常麻烦,今天给大家推荐一种非常快捷的方法

大家可以去我的Githup下载   https://github.com/simplyou/YJ-UIIView-/tree/master 在设置尺寸的时候亲们有没有感觉很蛋疼啊,这里提供了一套分类,直接放进工程里,在PCH中包含头文件就能解决你蛋疼的问题; /***********************  .h文件   ******************************** //  UIView+YJ.h //  Created by 闪电 on 14-6-8. //  Copyr

IOS Ui控件 修改位置和尺寸,代码添加控件

所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中, UIView的常见属性 UIView *superview; 获得自己的父控件对象 NSArray *subviews; 获得自己的所有子控件对象 NSInteger tag; 控件的ID(标识),父控件可以通过tag来找到对应的子控件 CGAffineTransform transform; 控件的形变属性(可以设置旋转角度.比例缩放.平移等属性) CGRect frame; 控件所在矩形框在父控件中的位置和尺

iOS UI进阶05

Quartz2D Quartz2D是二维的绘图引擎 经包装的函数库,方便开发者使用.也就是说苹果帮我们封装了一套绘图的函数库 用Quartz2D写的同一份代码,既可以运行在iphone上又可以运行在mac上,可以跨平台开发. 开发中比较常用的是截屏/裁剪/自定义UI控件. Quartz2D在iOS开发中的价值就是自定义UI控件. 在drawRect:方法中才能获取到上下文 Quartz2D绘图 自定义view:需要绘图,就必须重写drawRect:方法 1 drawRect视图要显示的时候,才会

IOS UI多线程 NSThread 下载并显示图片到UIImageView

效果图 @property (weak,nonatomic)IBOutletUILabel *downLabelInfo; @property (weak,nonatomic)IBOutletUIImageView *imageView; @end @implementationViewController - (void)viewDidLoad { [super viewDidLoad]; NSString *url  [email protected]"http://d.hiphotos.b

【IOS】读取、保存图片的各种方法

一.读取图片 1.从资源(resource)读取 1 UIImage* image=[UIImage imageNamed:@"1.jpg"]; 2.从网络读取[最好使用EGOImageView来获取网络图片] 1 NSURL *url=[NSURL URLWithString:@"http://www.sinaimg.cn/qc/photo_auto/chezhan/2012/50/00/15/80046_950.jpg"]; 2 UIImage *imgFrom

iOS 开发之 为UIButton添加类别方法加载网络图片

iOS 开发之 为UIButton添加类别方法加载网络图片 使用GCD线程队列实现 工程如下: UIButton+WebCache.h #import <UIKit/UIKit.h> // 为Button添加类别方法 @interface UIButton (WebCache) - (void)xr_setButtonImageWithUrl:(NSString *)urlStr; @end UIButton+WebCache.m #import "UIButton+WebCache

【腾讯TMQ】解放程序猿(媛)的双手—iOS UI自动化测试

解放程序猿(媛)的双手-iOS UI自动化测试 前言 随着移动互联网时代的蓬勃发展,移动终端的自动化测试也在业界日益活跃,总体来看在Android平台上的自动化工具和实践比较多,但是说到iOS平台无论从自动化工具的数量还是质量上就陡降了.究其原因,无外乎是iOS系统的封闭性,加上相对Android用户的数量少,导致对这个平台系统的自动化进展缓慢,据笔者了解到的情况,很多iOS平台的测试人员还处于纯手工测试模式,自动化程度和Android平台无法相论,更别提和PC端相比了. 然而越是困难的事,越是

iOS对UIViewController生命周期和属性方法的解析

目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实例的传值陷阱 四.UIViewController与StroyBoard的相关相互方法 1.ViewController直接在StoryBoard中进行跳转的传值 2.使用代码跳转Storyboard中的controller 五.UIViewController之间的一些从属关系 1.parentV

Android性能优化方法(六)

ContentProvider优化改进 1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括对单表查询.连表查询.分组查询.排序查询.经常是一到两个数量级的性能提升,且随着数据数量级增长. (2). 缺点索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加.在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响. (3).