美文网首页一群程序猿的秘密基地iOS进阶指南iOS开发
利用Category创建类的方法,快速修改frame,提高编程效

利用Category创建类的方法,快速修改frame,提高编程效

作者: iiKris | 来源:发表于2016-07-19 01:32 被阅读203次

Category是Objective-C 2.0之后添加的语言特性,Category的主要作用是为已经存在的类添加方法。通过Category可以把类的实现分开在几个不同的文件里面,这样做一是可以减少单个文件的体积,二是可以把不同的功能组织到不同的Category里面,三是可以按需加载想要的Category 等等。

一般我们修改某一个frame属性的时候都需要比较繁琐的代码书写,这样既费时费力,并且工程量较大的时候也会减弱代码的可读性,因此我们可以通过建立UIView的类别Category来实现修改frame属性的简单操作。

1.创建类别


创建Objective-C File文件 File的名字根据自己的习惯设定,最好是容易识别

(1)UIView+SHK.h


.h文件定义的属性可以根据自己需求添加

#import<UIKit/UIkit.h>

@interface UIView (SHK)

@property(nonatomic,assign) CGFloat x;

@property(nonatomic,assign) CGFloat y;

@property(nonatomic,assign) CGFloat centerX;

@property(nonatomic,assign) CGFloat centerY;

@property(nonatomic,assign) CGFloat width;

@property(nonatomic,assign) CGFloat height;

@property(nonatomic,assign) CGSize size;

@property(nonatomic,assign) CGPoint origin;

@end

(2)UIView+SHK.m

.m文件实现各个属性的setter方法和getter方法

#import"UIView+SHK.h"

@implementation UIView (SHK)

-(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)setCenterX:(CGFloat)centerX{

CGPoint center=self.center;

center.x=centerX;

self.center=center;

}

-(CGFloat)centerX{

returnself.center.x;

}

-(void)setCenterY:(CGFloat)centerY{

CGPoint center=self.center;

center.y=centerY;

self.center=center;

}

-(CGFloat)centerY{

returnself.center.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;

}

-(void)setSize:(CGSize)size{

CGRect frame=self.frame;

frame.size=size;

self.frame=frame;

}

-(CGSize)size{

returnself.frame.size;

}

-(void)setOrigin:(CGPoint)origin{

CGRect frame=self.frame;

frame.origin=origin;

self.frame=frame;

}

-(CGPoint)origin{

returnself.frame.origin;

}

@end

(3)简单的使用示例

导入头文件进行使用,frame的属性修改变得异常简单

#import"ViewController.h"

#import"UIView+SHK.h"  

@interface ViewController()

@end

@implementation ViewController

- (void)viewDidLoad {

[superviewDidLoad];

self.view.backgroundColor=[UIColorwhiteColor];

UIButton*btn1=[[UIButtonalloc]init];

btn1.backgroundColor=[UIColorredColor];

btn1.width=100;

btn1.height=100;

btn1.centerX=self.view.width*0.5;

btn1.centerY=self.view.height*0.5;

[self.viewaddSubview:btn1];

}

@end

小结

以上方法是针对近期自学新浪微博项目的一点小小总结,行笔简陋,如有错误,望指正。

相关文章

  • 利用Category创建类的方法,快速修改frame,提高编程效

    Category是Objective-C 2.0之后添加的语言特性,Category的主要作用是为已经存在的类添加...

  • iOS 修改私有方法总结

    iOS 修改私有方法总结 1.Category添加方法 原理:通过Category添加方法,优先于类中相同方法的特...

  • 2018-04-08 iOS开发历程(二)

    Category Category(分类): 在不修改原来的基础类,为一个类扩展方法.(主要用于给系统自带的类扩展...

  • OC Category陷阱

    测试OC Category分类方法与类方法同名情况的调用 1、创建UIView的category,假定名称为UIV...

  • Cateogry底层学习

    一、概述 Category,也就是分类,能够在不修改原类代码的基础上,为类增加一些方法和属性。 Category的...

  • 2019-11-15 Category详解

    Category 的本质: 利用runtime,在程序运行时给已经存在的类添加方法 Category的特点:只能给...

  • iOS设计模式——Category(转)

    Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类...

  • Category辨析

    Category用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优...

  • DES加密

    创建一个NSData的类目(category) 类目方法的实现 创建一个管理类 方法的实现 使用方法

  • 想删掉

    1.创建category文件 2.选择合适的类和类型 备注:category并不是绝对的覆盖了类的同名方法,而是c...

网友评论

    本文标题:利用Category创建类的方法,快速修改frame,提高编程效

    本文链接:https://www.haomeiwen.com/subject/uolmjttx.html