UI基础整理-3
来源:互联网 发布:js代码整理工具 编辑:程序博客网 时间:2024/05/21 21:50
第三节:UI_LTView
将一个label和一个textfield封装到一个view中,这样直接使用这个view就可以输出这个封装的类型(在.h中还需要声明这两个属性)
LTView.h中
@property(strong,nonatomic)UILabel*label;
@property(strong,nonatomic)UITextField*textField;
LTView.m中
//重写初始化方法
-(instancetype)initWithFrame:(CGRect)frame
{
//super:是编译器指令,指向父类发送消息
self = [superinitWithFrame:frame];
//1.父类完成共有的实例变量的初始化,将结果赋给子类
//2.如果父类初始化操作失败,子类没有初始化的必要,直接返回即可
//给父类发送初始化消息(将父类的初始化继承过来)
if(self){ //判断父类是否初始化成功
//在初始化操作当中,尽量不要操作视图,只做数据的处理
[selfdrawView];
}
return self;
-(instancetype)initWithFrame:(CGRect)frame
{
//super:是编译器指令,指向父类发送消息
self = [superinitWithFrame:frame];
//1.父类完成共有的实例变量的初始化,将结果赋给子类
//2.如果父类初始化操作失败,子类没有初始化的必要,直接返回即可
//给父类发送初始化消息(将父类的初始化继承过来)
if(self){ //判断父类是否初始化成功
//在初始化操作当中,尽量不要操作视图,只做数据的处理
[selfdrawView];
}
return self;
}
- (void)drawView{
self.label= [[UILabelalloc]initWithFrame:CGRectMake(0,0,100,50)];
self.label.text=@"用户名";
self.label.backgroundColor= [UIColorredColor];
[selfaddSubview:self.label];
self.textField= [[UITextFieldalloc]initWithFrame:CGRectMake(135,0,200,50)];
self.textField.placeholder=@"请输入用户名";
self.textField.backgroundColor= [UIColorbrownColor];
[selfaddSubview:self.textField];
self.label= [[UILabelalloc]initWithFrame:CGRectMake(0,0,100,50)];
self.label.text=@"用户名";
self.label.backgroundColor= [UIColorredColor];
[selfaddSubview:self.label];
self.textField= [[UITextFieldalloc]initWithFrame:CGRectMake(135,0,200,50)];
self.textField.placeholder=@"请输入用户名";
self.textField.backgroundColor= [UIColorbrownColor];
[selfaddSubview:self.textField];
下面两个是创建view,并且修改其中的属性:
LTView*ltview1 = [[LTViewalloc]initWithFrame:CGRectMake(20,80,335,50)];
[self.windowaddSubview:ltview1];
[self.windowaddSubview:ltview1];
LTView*ltview2 = [[LTViewalloc]initWithFrame:CGRectMake(20,150,335,50)];
ltview2.label.text=@"密码";
ltview2.textField.secureTextEntry=YES;
ltview2.textField.placeholder=@"请输入密码";
ltview2.textField.backgroundColor= [UIColorcyanColor];
ltview2.label.text=@"密码";
ltview2.textField.secureTextEntry=YES;
ltview2.textField.placeholder=@"请输入密码";
ltview2.textField.backgroundColor= [UIColorcyanColor];
[self.windowaddSubview:ltview2];
容器视图控制器
先导入子视图控制器—>在父视图控制器中声明子视图控制器的属性—>创建控制器—>给当前控制器添加子控制器—>默认显示第一个页面的控制器
在其中子视图控制器中添加button,父控制器中写button的实现方法
子视图控制器的button:
父视图控制器中对于子视图控制器button的实现方法:
//初始化方法
//nibNameOrNil:可视化文件的名字
//bundle:包
-(instancetype)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil{
if(self= [superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil]){
}
// NSLog(@"0");//视图控制器的生命周期从这里开始
return self;
}
//加载视图
#warning注意:重写loadView一定要指定根视图,否则会进入死循环(在loadView和viewDidLoad之间跳)
//nibNameOrNil:可视化文件的名字
//bundle:包
-(instancetype)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil{
if(self= [superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil]){
}
// NSLog(@"0");//视图控制器的生命周期从这里开始
return self;
}
//加载视图
#warning注意:重写loadView一定要指定根视图,否则会进入死循环(在loadView和viewDidLoad之间跳)
//- (void)loadView{}
- (void) changeToCustomPage{}
//视图已经加载
- (void)viewDidLoad {}
//视图将要显示
- (void)viewWillAppear:(BOOL)animated{
// NSLog(@"3");
}
//视图已经显示
- (void)viewDidAppear:(BOOL)animated{
// NSLog(@"4");
}
//视图将要消失
- (void)viewWillDisappear:(BOOL)animated{
// NSLog(@"5");
}
//视图已经消失
- (void)viewDidDisappear:(BOOL)animated{
// NSLog(@"6");//试图控制器在被移除之后生命周期结束
}
视图的切换(通过视图控制器)
在子视图控制器中设置button(目标设置为父视图控制器),触发的事件在父视图控制器中实现
将两个view添加到window上如图所示键盘回收问题:
//键盘回收封装在类的内部:外界不需要重复的设置代理,但是可定制性比较弱,如果不想键盘回收,试图跳到下一个输入框就无法实现
//键盘回收封装在类的外部:外界的可定制性比较强,但是需要重复的书写代码
0 0
- UI基础整理-3
- UI基础整理-21
- UI基础整理-2
- UI基础整理-4
- UI基础整理-5
- UI基础整理-6
- UI基础整理-7
- UI基础整理-8
- UI基础整理-9
- UI基础整理-10
- UI基础整理-11
- UI基础整理-12
- UI基础整理-13
- UI基础整理-14
- UI基础整理-15
- UI基础整理-16
- UI基础整理-17
- UI基础整理--18
- Shader - Pass (二)
- 如何查看USB方式连接Android设备的外接设备信息。
- UI基础整理-2
- eclipse maven pom.xml错误
- LIS
- UI基础整理-3
- 关于cocos2dx的背景音乐和音效(1)
- 创业不难 关键在于坚持
- PEP8 Python 编码规范
- java调用.net发布webservice心得
- 华为OJ基础篇-字符串加密
- Swift:自定义UITableViewCell背景色
- css盒模型margin折叠问题解决方案总结
- 关于UITableView的性能优化(历上最全面的优化分析)