[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性
大家应该知道如何设置一个view组件的位置把,是的,如下:
view.frame=CGRectMake(x,y,width,height);//设置组件的x,y坐标,设置组件的宽度高度。。。
如果我单独要设置坐标或者宽度高度,得这样:
view.frame.size.width=100;
view.frame.size.height=100;
如果你想偷个懒,比如:
view.frame.size=(CGSize){200,200};//这个语句会报错,因为无法对size赋值
通过上面的代码,大家会发现,访问坐标和宽度高度怎么这么麻烦呢?
是很麻烦,因为iOS提供过来就是这样访问的,如果我想要直接一点,比如:
view.x=0;
view.y=0;
view.height=100;
view.width=100;
这样访问起来写起代码来是不是简单很多。那要怎么实现这样的功能呢,我们可以去扩展UIView类,提供这样的属性供用户直接访问。
新建一个文件叫做:HWUIView+Extension,继承自NSObject
HWUIView+Extension.h文件代码如下:
// // Extension.h // // Created by PC-qiu on 15/6/11. // Copyright (c) 2015年 HM. All rights reserved. // #import <UIKit/UIKit.h> @interface UIView(Extension)//这里一定要这样写代表扩展UIView,当然你也可以去扩展别的东西 //x坐标属性 @property (nonatomic,assign)CGFloat x; //y坐标 @property (nonatomic,assign)CGFloat y; //宽度 @property (nonatomic,assign)CGFloat width; //高度 @property (nonatomic,assign)CGFloat height; //大小 @property (nonatomic,assign)CGSize size; //位置 @property (nonatomic,assign)CGPoint origin; //中心点x @property (nonatomic,assign)CGFloat centerX; //中心点y @property (nonatomic,assign)CGFloat centerY; @end
而HWUIView+Extension.m文件都是对这些属性的get,set进行重写,实现功能,代码如下:
// // Extension.m // 黑马微博2 // // Created by PC-qiu on 15/6/11. // Copyright (c) 2015年 HM. All rights reserved. // #import "HWUIView+Extension.h" @implementation UIView(Extension) //x属性的get,set -(void)setX:(CGFloat)x { CGRect frame=self.frame; frame.origin.x=x; self.frame=frame; } -(CGFloat)x { return self.frame.origin.x; } //centerX属性的get,set -(void)setCenterX:(CGFloat)centerX { CGPoint center=self.center; center.x=centerX; self.center=center; } -(CGFloat)centerX { return self.center.x; } //centerY属性的get,set -(void)setCenterY:(CGFloat)centerY { CGPoint center=self.center; center.y=centerY; self.center=center; } -(CGFloat)centerY { return self.center.y; } //y属性的get,set -(void)setY:(CGFloat)y { CGRect frame=self.frame; frame.origin.y=y; self.frame=frame; } -(CGFloat)y { return self.frame.origin.y; } //width属性的get,set -(void)setWidth:(CGFloat)width { CGRect frame=self.frame; frame.size.width=width; self.frame=frame; } -(CGFloat)width { return self.frame.size.width; } //height属性的get,set -(void)setHeight:(CGFloat)height { CGRect frame=self.frame; frame.size.height=height; self.frame=frame; } -(CGFloat)height { return self.frame.size.height; } //size属性的get,set -(void)setSize:(CGSize)size { CGRect frame=self.frame; frame.size.width=size.width; frame.size.height=size.height; self.frame=frame; } -(CGSize)size { return self.frame.size; } //origin属性的get,set,用于设置坐标 -(void)setOrigin:(CGPoint)origin { CGRect frame=self.frame; frame.origin.x=origin.x; frame.origin.y=origin.y; self.frame=frame; } -(CGPoint)origin { return self.frame.origin; } @end
非常简单的分享,个人觉得可以加快一些项目的开发速度。
需要使用的人引入我所写的.h文件就可以了。
不明白的地方可以来找我,qq:1750587828 欢迎找我探讨学习。