標籤:
大家應該知道如何設定一個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等屬性