让结构体类型frame的某个属性可以直接修改

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

本篇是是本人在博客园写的第一篇博客,前几天因为种种原因最终决定离开混了几年的csdn。希望在博客园有个新的开始

Foundation框架里面的frame是大家最熟悉不过的一个属性了,但是修改起来比较麻烦,他是CGRect类型的CGRect是结构体 结构体类型里面的某个属性如果想要修改是不允许单个修改的,必须像下面这样先取出,改一下再重新赋值回去,也就是大家常说的三部曲

如果结构体类型的东西也可以直接修改 那会有多爽?就像下面这样。

其实只要自己给UIView写个分类就好了 用这个分类来替代frame。

大概思想就是给用分类给UIView多增加几个属性x,y,height,width。这几个属性都分别实现get方法和set方法。这样以后frame就可以离开他了

分类UIView+Frame 声明

1//2//UIView+Frame.h3//SXDownLoader4//5//Created by 董尚先 on 15/1/2.6//Copyright (c) 2015年 shangxianDante. All rights reserved.7//89#import<UIKit/UIKit.h>1011@interfaceUIView (Frame)1213//自己模仿frame写出他的四个属性14@PRoperty (nonatomic, assign) CGFloat x;15@property (nonatomic, assign) CGFloat y;16@property (nonatomic, assign) CGFloat width;17@property (nonatomic, assign) CGFloat height;181920@end

分类UIView+Frame 实现

#import"UIView+Frame.h"@implementationUIView (Frame)- (void)setX:(CGFloat)x

{

CGRect frame=self.frame;

frame.origin.x=x;

self.frame=frame;

}-(CGFloat)x

{returnself.frame.origin.x;

}- (void)setY:(CGFloat)y

{

CGRect frame=self.frame;

frame.origin.y=y;

self.frame=frame;

}-(CGFloat)y

{returnself.frame.origin.y;

}- (void)setWidth:(CGFloat)width

{

CGRect frame=self.frame;

frame.size.width=width;

self.frame=frame;

}-(CGFloat)width

{returnself.frame.size.width;

}- (void)setHeight:(CGFloat)height

{

CGRect frame=self.frame;

frame.size.height=height;

self.frame=frame;

}-(CGFloat)height

{returnself.frame.size.height;

}@end

之后在需要的地方Import一下

就可以把那些UI控件什么的frame轻松的单个修改了

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航