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;
}

- (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];
   

下面两个是创建view,并且修改其中的属性:
   LTView*ltview1 = [[LTViewalloc]initWithFrame:CGRectMake(20,80,335,50)];
    [
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];
    [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一定要指定根视图,否则会进入死循环(loadViewviewDidLoad之间跳)
//- (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
原创粉丝点击