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

时间: 2024-10-05 19:47:31

[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性的相关文章

直接设置UIView的x,y,width,height...

// 为UIView写分类 //UIView+Extension.h #import <UIKit/UIKit.h> @interface UIView (Extension) @property (nonatomic, assign) CGFloat x; @property (nonatomic, assign) CGFloat y; @property (nonatomic, assign) CGFloat width; @property (nonatomic, assign) CGF

Swift学习之UIView延展添加新属性left,right,top,bottom,width,height,centerx,centery

import Foundation import UIKit import CoreGraphics extension UIView{ var left:CGFloat{ set{ var frame = self.frame frame.origin.x = newValue self.frame = frame } get{ return self.frame.origin.x } } var top:CGFloat{ set{ var frame = self.frame frame.o

十三:UIView中frame的封装(方便使用x,y,width,height,center,size等)

新建一个继承自UIView的扩展类 在.h文件中写代码: 1 @property (assign, nonatomic)CGSize size; 2 @property (assign, nonatomic)CGFloat width; 3 @property (assign, nonatomic)CGFloat height; 4 @property (assign, nonatomic)CGFloat x; 5 @property (assign, nonatomic)CGFloat y;

iOS开发-UIView扩展CGRect

关于UIView的位置都会遇到,一般需要改变UIView的位置,需要先获取原有的frame位置,然后在frame上面修改,有的时候如果只是改变了一下垂直方向的位置,宽度和高度的一种,这种写法很麻烦.下面两种写法第二种明显更简单,如果需要实现第二种方法就需要扩展UIView. //1 CGRect frame=self.testView.frame; frame.size.width=120; self.testView.frame=frame; [self printFrame]; //2 se

swift UIView 扩展

import Foundation import UIKit /// /// @brief UIView的扩展方法,方便工程全局使用扩展方法来创建或者使用所有继承于UIView的控件 /// extension UIView { /// /// 获取或设置origin.x /// func originX() ->CGFloat { return self.frame.origin.x } func originX(let originX: CGFloat) { var rect = self.

linux下安装 gd扩展和 ftp扩展

ftp拓展 1.进入PHP安装源码包,找到ext下的ftp,进入 cd /usr/local/mysql/support-files/php-7.0.12/ext/ftp 2./usr/local/php/bin/phpize 3../configure --with-php-config=/usr/local/php/bin/php-config --enable-ftp 4.make && make install 5.vim /etc/php.ini  添加 : extension=

扩展欧几里得算法------扩展欧几里德算法

扩展欧几里得算法及其应用 一.扩展欧几里得算法 扩展欧几里得算法:对于不完全为 0 的非负整数 a,b,若gcd(a,b)表示 a,b 的最大公约数,必然存在整数对x,y ,使得 ax+by = gcd(a,b). 算法过程: 设 a>b,当 b=0时,gcd(a,b)=a.此时满足ax+by = gcd(a,b)的一组整数解为x=1,y=0:当a*b!=0 时, 设 a*x1+b*y1=gcd(a,b):b*x2+(a mod b)*y2=gcd(b,a mod b): 根据欧几里得原理知 g

R内存扩展 win7内存扩展

安装包 imdiskinst 文件 ???? ??http://www.ltr-data.se/ http://cruciancar.blog.me/150101634586 --TEMP ?? TEMP,TMP%USERPROFILE%\AppData\Local\Temp%USERPROFILE%\AppData\Local\Temp --Licensehttp://linsoo.co.kr/2281 --??imdisk.exe -a -t vm -m r: -s 1024m -p "/f

在spatial扩展和3D扩展都带这一工具

ArcGIS水分分析工具的流向分析是基于D8单流向算法,如果分析使用的DEM存在凹陷点,就会产生汇,导致径流断流从而影响了分析结果.在前面章节<ArcGIS水文分析实战教程(2)ArcGIS水文分析工具的基本原理>中又介绍过D8算法,而<ArcGIS水文分析实战教程(4)地形预处理>章节中笔者也较少过如何创建无凹陷点得DEM数据,在使用流向分析工具之前可以先行阅读. 首先流向分析要使用填洼过的数据,确保DEM数据没有凹陷点.如果数据准备妥当,直接使用水文分析工具箱中的[流向]工具进