[扩展]为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   欢迎找我探讨学习。

转载于:https://www.cnblogs.com/qiulove007/p/4644146.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值