UI基础整理-3

第三节: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 = [ super initWithFrame :frame];
   
//1. 父类完成共有的实例变量的初始化 , 将结果赋给子类
   
//2. 如果父类初始化操作失败 , 子类没有初始化的必要 , 直接返回即可
   
   
// 给父类发送初始化消息 ( 将父类的初始化继承过来 )
   
if ( self ){   // 判断父类是否初始化成功
       
       
// 在初始化操作当中 , 尽量不要操作视图 , 只做数据的处理
        [
self drawView ];
       
    }
   
return self ;
}

- ( void )drawView{
   
   
self . label = [[ UILabel alloc ] initWithFrame : CGRectMake ( 0 , 0 , 100 , 50 )];
   
self . label . text = @" 用户名 " ;
   
self . label . backgroundColor = [ UIColor redColor ];
    [
self addSubview : self . label ];
   
   
self . textField = [[ UITextField alloc ] initWithFrame : CGRectMake ( 135 , 0 , 200 , 50 )];
   
self . textField . placeholder = @" 请输入用户名 " ;
   
self . textField . backgroundColor = [ UIColor brownColor ];
    [
self addSubview : self . textField ];
   

下面两个是创建view,并且修改其中的属性:
    LTView *ltview1 = [[ LTView alloc ] initWithFrame : CGRectMake ( 20 , 80 , 335 , 50 )];
    [
self . window addSubview :ltview1];
 
    LTView *ltview2 = [[ LTView alloc ] initWithFrame : CGRectMake ( 20 , 150 , 335 , 50 )];
    ltview2.
label . text = @" 密码 " ;
    ltview2.
textField . secureTextEntry = YES ;
    ltview2.
textField . placeholder = @" 请输入密码 " ;
   
    ltview2.
textField . backgroundColor = [ UIColor cyanColor ];
    [self.windowaddSubview:ltview2];


容器视图控制器
先导入子视图控制器—>在父视图控制器中声明子视图控制器的属性—>创建控制器—>给当前控制器添加子控制器—>默认显示第一个页面的控制器
在其中子视图控制器中添加button,父控制器中写button的实现方法
子视图控制器的button:

父视图控制器中对于子视图控制器button的实现方法:




// 初始化方法
//nibNameOrNil: 可视化文件的名字
//bundle:
-(
instancetype )initWithNibName:( NSString *)nibNameOrNil bundle:( NSBundle *)nibBundleOrNil{
   
if ( self = [ super initWithNibName :nibNameOrNil bundle :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上如图所示



键盘回收问题:
    //键盘回收封装在类的内部:外界不需要重复的设置代理,但是可定制性比较弱,如果不想键盘回收,试图跳到下一个输入框就无法实现
   //键盘回收封装在类的外部:外界的可定制性比较强,但是需要重复的书写代码




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值