码迷,mamicode.com
首页 > 其他好文 > 详细

[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性

时间:2015-07-13 23:55:32      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

  大家应该知道如何设置一个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   欢迎找我探讨学习。

[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性

标签:

原文地址:http://www.cnblogs.com/qiulove007/p/4644146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!