iOS视图创建初始化的一些工厂方法
2013-12-30 17:04
344 查看
头文件
实现文件
// 提供一些UI控件的工厂方法,实现一些通用的控件初始化工作 #import <UIKit/UIKit.h> @interface UIView (UIFactory) // Label + (id)createLabel; + (id)createLabel:(CGRect)frame; // TextField + (id)createTextFiled; + (id)createTextFiled:(UITextBorderStyle)style; + (id)createTextFiled:(CGRect)frame style:(UITextBorderStyle)style; // Button + (id)createButton:(CGRect)frame; + (id)createButton:(CGRect)frame type:(UIButtonType)type; + (id)createButton:(CGRect)frame target:(id)target action:(SEL)action; + (id)createButton:(CGRect)frame target:(id)target action:(SEL)action buttonType:(UIButtonType)type; // TableView + (id)createTableView:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate; + (id)createTableView:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate style:(UITableViewStyle)style; + (id)createTableView:(CGRect)frame dataSource:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate; + (id)createTableView:(CGRect)frame dataSource:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate style:(UITableViewStyle)style; // TextView @end
实现文件
#import "UIView+UIFactory.h" #ifndef Demo_Macros_h #define Demo_Macros_h #ifdef __IPHONE_6_0 #define kTextAlignmentLeft NSTextAlignmentLeft #define kTextAlignmentCenter NSTextAlignmentCenter #define kTextAlignmentRight NSTextAlignmentRight #define kLineBreakModeCharaterWrap NSLineBreakByCharWrapping #define kLineBreakModeWordWrap NSLineBreakByWordWrapping #define kLineBreakModeClip NSLineBreakByClipping #define kLineBreakModeTruncatingHead NSLineBreakByTruncatingHead #define kLineBreakModeTruncatingMiddle NSLineBreakByTruncatingMiddle #define kLineBreakModeTruncatingTail NSLineBreakByTruncatingTail #else #define kTextAlignmentLeft UITextAlignmentLeft #define kTextAlignmentCenter UITextAlignmentCenter #define kTextAlignmentRight UITextAlignmentRight #define kLineBreakModeCharaterWrap UILineBreakModeCharacterWrap #define kLineBreakModeWordWrap UILineBreakModeWordWrap #define kLineBreakModeClip UILineBreakModeClip #define kLineBreakModeTruncatingHead UILineBreakModeHeadTruncation #define kLineBreakModeTruncatingMiddle UILineBreakModeMiddleTruncation #define kLineBreakModeTruncatingTail UILineBreakModeTailTruncation #endif #define kMainScreenFrame [[UIScreen mainScreen] bounds] #define kMainScreenWidth kMainScreenFrame.size.width #define kMainScreenHeight kMainScreenFrame.size.height-20 #define kApplicationFrame [[UIScreen mainScreen] applicationFrame] #endif @implementation UIView (UIFactory) #pragma mark Label + (id)createLabel { return [UIView createLabel:CGRectZero]; } + (id)createLabel:(CGRect)frame { UILabel *label = [[UILabel alloc] initWithFrame:frame]; label.backgroundColor = [UIColor clearColor]; label.textAlignment = kTextAlignmentCenter; #if __has_feature(objc_arc) return label; #else return [label autorelease]; #endif } #pragma mark TextField + (id)createTextFiled { return [UIView createTextFiled:UITextBorderStyleRoundedRect]; } + (id)createTextFiled:(UITextBorderStyle)style { return [UIView createTextFiled:CGRectZero style:style]; } + (id)createTextFiled:(CGRect)frame style:(UITextBorderStyle)style { UITextField *textField = [[UITextField alloc] initWithFrame:frame]; textField.textAlignment = kTextAlignmentCenter; textField.textColor = [UIColor blackColor]; textField.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; textField.borderStyle = style; #if __has_feature(objc_arc) return textField; #else return [textField autorelease]; #endif } #pragma mark Button + (id)createButton:(CGRect)frame { return [UIView createButton:frame type:UIButtonTypeRoundedRect]; } + (id)createButton:(CGRect)frame type:(UIButtonType)type { UIButton *btn = [UIButton buttonWithType:type]; btn.frame = frame; return btn; } + (id)createButton:(CGRect)frame target:(id)target action:(SEL)action { return [UIView createButton:frame target:target action:action buttonType:UIButtonTypeRoundedRect]; } + (id)createButton:(CGRect)frame target:(id)target action:(SEL)action buttonType:(UIButtonType)type { UIButton *btn = [UIButton buttonWithType:type]; btn.frame = frame; [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; return btn; } #pragma mark TableView + (id)createTableView:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate { return [UIView createTableView:CGRectZero dataSource:dataSource delegete:delegate style:UITableViewStyleGrouped]; } + (id)createTableView:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate style:(UITableViewStyle)style { return [UIView createTableView:CGRectZero dataSource:dataSource delegete:delegate style:style]; } + (id)createTableView:(CGRect)frame dataSource:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate { return [UIView createTableView:frame dataSource:dataSource delegete:delegate style:UITableViewStyleGrouped]; } + (id)createTableView:(CGRect)frame dataSource:(id<UITableViewDataSource>)dataSource delegete:(id<UITableViewDelegate>)delegate style:(UITableViewStyle)style { UITableView *tableView = [[UITableView alloc] initWithFrame:frame style:style]; tableView.delegate = delegate; tableView.dataSource = dataSource; #if __has_feature(objc_arc) return tableView; #else return [tableView autorelease]; #endif } #pragma mark TextView + (id)createTextView:(CGRect)frame { UITextView *tv = [[UITextView alloc] initWithFrame:frame]; #if __has_feature(objc_arc) return tv; #else return [tv autorelease]; #endif } @end
相关文章推荐
- ios创建视图的一些方法封装
- iOS中三种数据存储(本地持久化),cell是手写创建和stroyboard或者xib创建的初始化的方法
- iOS 导航控制器、标签、表视图的创建方法
- iOS小练习,创建对象,初始化成员变量,对象调用方法
- IOS菜鸟的所感所思(九)——收藏视图的创建并对cell的初始化
- iOS 视图实现圆角效果的三种方法及比较
- iOS 创建子线程方法
- 在Django中创建URLconf相关的通用视图的方法
- 创建模式之二:工厂方法(Factory Method) 续2
- iOS开发 两个视图之间值传递的常用方法<三>
- PhoneGap2.X及3.X项目工程创建方法(IOS)
- IOS中集合视图UICollectionView中Decoration View的简易使用方法。
- IOS学习笔记(十)之UIImageView图片视图的基本概念和使用方法
- iOS 使用纯代码或xib创建圆角视图
- 理解iOS多线程应用的开发以及线程的创建方法
- IOS的一些手势方法(手势的tag值 绝对值 偏移量 中心点 等等)
- ORACLE中判断表或视图是否存在,如果不存在再创建的方法
- IOS学习笔记(八)之UIActivityIndicatorView(活动指示器视图)的基本概念和使用方法
- IOS 学习 创建表格的方法
- JavaScript中创建对象的方法:工厂模式,构造函数模式, 原型模式