修改frame快捷方法,不必再繁琐的计算
2016-03-21 16:06
387 查看
平时计算控件frame时我们是这样计算的:
//首先设置frame
view.frame = CGRectMake(0, 0, 320, 150);
//如果想改变其中的宽或者高或者位置,则需要重新设置frame大小,这个时候需要重新写一遍以前设置的frame
view.frame = CGRectMake(view.frame.origin.x, 100, view.frame.size.width, view.frame.size.height);
这样写是不是很麻烦,如果遇到很多控件都需要改变的时候,再写这么多设置frame的代码是不是很麻烦呢?那么我们不如就直接创建一个category
一、创建一个类别:
二、写代码
.h 文件定义了 x, y, width, height 等方便读写的属性,代码如下:
.m 文件实现各个属性的setter和getter方法,代码如下:
三、使用的时候只需要导入#import "UIView+Layout.h"就可以了
view.y = 100;//改变y坐标
view.x = 100;//改变x坐标
view.width = 100;//改变宽度
view.height = 100;//改变高度
//首先设置frame
view.frame = CGRectMake(0, 0, 320, 150);
//如果想改变其中的宽或者高或者位置,则需要重新设置frame大小,这个时候需要重新写一遍以前设置的frame
view.frame = CGRectMake(view.frame.origin.x, 100, view.frame.size.width, view.frame.size.height);
这样写是不是很麻烦,如果遇到很多控件都需要改变的时候,再写这么多设置frame的代码是不是很麻烦呢?那么我们不如就直接创建一个category
一、创建一个类别:
二、写代码
.h 文件定义了 x, y, width, height 等方便读写的属性,代码如下:
#import <UIKit/UIKit.h> @interface UIView (Layout) @property (assign, nonatomic) CGFloat top; @property (assign, nonatomic) CGFloat bottom; @property (assign, nonatomic) CGFloat left; @property (assign, nonatomic) CGFloat right; @property (assign, nonatomic) CGFloat x; @property (assign, nonatomic) CGFloat y; @property (assign, nonatomic) CGPoint origin; @property (assign, nonatomic) CGFloat centerX; @property (assign, nonatomic) CGFloat centerY; @property (assign, nonatomic) CGFloat width; @property (assign, nonatomic) CGFloat height; @property (assign, nonatomic) CGSize size; @end
.m 文件实现各个属性的setter和getter方法,代码如下:
#import "UIView+Layout.h" @implementation UIView (Layout) @dynamic top; @dynamic bottom; @dynamic left; @dynamic right; @dynamic width; @dynamic height; @dynamic size; @dynamic x; @dynamic y; - (CGFloat)top { return self.frame.origin.y; } - (void)setTop:(CGFloat)top { CGRect frame = self.frame; frame.origin.y = top; self.frame = frame; } - (CGFloat)left { return self.frame.origin.x; } - (void)setLeft:(CGFloat)left { CGRect frame = self.frame; frame.origin.x = left; self.frame = frame; } - (CGFloat)bottom { return self.frame.size.height + self.frame.origin.y; } - (void)setBottom:(CGFloat)bottom { CGRect frame = self.frame; frame.origin.y = bottom - frame.size.height; self.frame = frame; } - (CGFloat)right { return self.frame.size.width + self.frame.origin.x; } - (void)setRight:(CGFloat)right { CGRect frame = self.frame; frame.origin.x = right - frame.size.width; self.frame = frame; } - (CGFloat)x { return self.frame.origin.x; } - (void)setX:(CGFloat)value { CGRect frame = self.frame; frame.origin.x = value; self.frame = frame; } - (CGFloat)y { return self.frame.origin.y; } - (void)setY:(CGFloat)value { CGRect frame = self.frame; frame.origin.y = value; self.frame = frame; } - (CGPoint)origin { return self.frame.origin; } - (void)setOrigin:(CGPoint)origin { CGRect frame = self.frame; frame.origin = origin; self.frame = frame; } - (CGFloat)centerX { return self.center.x; } - (void)setCenterX:(CGFloat)centerX { CGPoint center = self.center; center.x = centerX; self.center = center; } - (CGFloat)centerY { return self.center.y; } - (void)setCenterY:(CGFloat)centerY { CGPoint center = self.center; center.y = centerY; self.center = center; } - (CGFloat)width { return self.frame.size.width; } - (void)setWidth:(CGFloat)width { CGRect frame = self.frame; frame.size.width = width; self.frame = frame; } - (CGFloat)height { return self.frame.size.height; } - (void)setHeight:(CGFloat)height { CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } - (CGSize)size { return self.frame.size; } - (void)setSize:(CGSize)size { CGRect frame = self.frame; frame.size = size; self.frame = frame; } @end
三、使用的时候只需要导入#import "UIView+Layout.h"就可以了
view.y = 100;//改变y坐标
view.x = 100;//改变x坐标
view.width = 100;//改变宽度
view.height = 100;//改变高度
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码