自定义视图
例如,登陆页面中,左边label,右边textField。自定义
@interface LTView : UIView @property (nonatomic,retain) UILabel *label; @property (nonatomic,retain) UITextField *textField; - (instancetype)initWithFrame:(CGRect)frame text:(NSString *)text placeHolder:(NSString *)placeHolder; @end
@implementation LTView
- (instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
//定义宽和高
CGFloat w = frame.size.width;
CGFloat h = frame.size.height;
self.label = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, w/3 - 15, h - 10)];
[self addSubview:self.label];
self.textField = [[UITextField alloc]initWithFrame:CGRectMake(w/3 - 5, 5, 3*w / 3, h - 10)];
self.textField.layer.cornerRadius = 8;
self.textField.layer.borderWidth = 1;
[self addSubview:self.textField];
[self.label release];
[self.textField release];
}return self;
}
- (void)dealloc{
[self.label release];
[self.textField release];
[super dealloc];
}
- (instancetype)initWithFrame:(CGRect)frame text:(NSString *)text placeHolder:(NSString *)placeHolder{
self = [self initWithFrame:frame];
if (self) {
self.label.text = text;
self.textField.placeholder = placeHolder;
}
return self;
}
视图控制器
概述UIViewController:视图控制器
控制视图显示,响应时间
分担AppDelegate的工作
实现模块独立,提高复用性
功能
控制视图大小变化,布局视图,响应事件
检测以及处理内存警告
检测以及处理屏幕旋转
检测视图的切换
MVC概述
UIViewController是MVC设计模式的核心
MVC是一个框架级的设计模式
M是Model,主要用于建立数据模型
V是View,View主要功能是展示数据
C是控制器,主要是控制M和V的通信
UIViewController自带一个空的View,与需求不符合,
视图控制器只负责控制视图显示,响应事件
所以使用自定义视图类:
1.自定义视图继承UIView,在初始化方法中添加子视图控件
2.重写controller的loadView方法,创建自定义试图对象,并指定为controller的View
3.将子视图控件对象设置为自定义视图类的属性,在viewDidLoad方法中进行设置
@implementation ViewController -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { NSLog(@"1 "); }return self; } - (void)loadView{ [super loadView]; //重写 UIView *view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds]; view.backgroundColor = [UIColor brownColor]; self.view = view; NSLog(@"2"); } -(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:YES]; NSLog(@"3"); } - (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:YES]; NSLog(@"4"); }
//视图控制器功能一、 //1.检测并响应时间 //2.视图的整体布局 //3.检测屏幕旋转 //4.检测并处理内存警告 //1.屏幕能否旋转(默认旋转) - (BOOL)shouldAutorotate{ return YES; } //屏幕能旋转的方向 - (NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskAllButUpsideDown; }
//内存警告 - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; //如果视图被加载,而且视图没有显示,将其release if ([self isViewLoaded] == YES && self.view.window == nil) { self.view = nil; } // Dispose of any resources that can be recreated. }