您的位置:首页 > 移动开发 > IOS开发

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

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



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



其实只要自己给UIView写个分类就好了 用这个分类来替代frame。
大概思想就是给用分类给UIView多增加几个属性x,y,height,width。这几个属性都分别实现get方法和set方法。这样以后frame就可以离开他了
写一个分类:UIView+Frame
h文件

#import <UIKit/UIKit.h>

@interface UIView (Frame)

// 自己模仿frame写出他的四个属性
@property (nonatomic, assign) CGFloat  x;
@property (nonatomic, assign) CGFloat  y;
@property (nonatomic, assign) CGFloat  width;
@property (nonatomic, assign) CGFloat  height;

@end


m文件

#import "UIView+Frame.h"

@implementation UIView (Frame)

- (void)setX:(CGFloat)x
{
CGRect frame = self.frame;
frame.origin.x = x;
self.frame = frame;
}

- (CGFloat)x
{
return self.frame.origin.x;
}

- (void)setY:(CGFloat)y
{
CGRect frame = self.frame;
frame.origin.y = y;
self.frame = frame;
}

- (CGFloat)y
{
return self.frame.origin.y;
}

- (void)setWidth:(CGFloat)width
{
CGRect frame = self.frame;
frame.size.width = width;
self.frame = frame;
}

- (CGFloat)width
{
return self.frame.size.width;
}

- (void)setHeight:(CGFloat)height
{
CGRect frame = self.frame;
frame.size.height = height;
self.frame = frame;
}

- (CGFloat)height
{
return self.frame.size.height;
}

@end


之后在需要的地方#import"UIView+Frame.h"一下
就可以把那些UI控件什么的frame轻松的单个修改了



本文转自董铂然,点击查看原文

本文Jack Jia Dome:http://download.csdn.net/detail/jackjia2015/9418280
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: