UI基础-基础视图、程序启动流程

UITextField

输入框:是控制文本输入和显示的控件。

iOS系统借助虚拟键盘实现输入,当点击输入框,系统会自动调出键盘,方便 你进一步操作。在你不需要输入的时候,可以使用收回键盘的方法,收回弹出的键盘。

创建UITextField的步骤:

1、开辟空间并初始化(如果本类有初始化方法,使⽤用自己的;否则 使用父类的)。

2、设置文本显示、输入相关的属性

3、添加到父视图上,用以显示

4、释放

UITextField *userNameTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 190, 30)];
userNameTextField.borderStyle = UITextBorderStyleRoundedRect;
userNameTextField.placeholder = @"手机号/邮箱";        [containerView addSubview:userNameTextField]; 
[userNameTextField release];

UITextField核心功能:

1.文本显示:
这里写图片描述

 // 占位字(只有当没有输入的字  才会显示)
    tf.placeholder = @"请输入用户名:";

    // 设置字体大小
    tf.font = [UIFont systemFontOfSize:17];

    // 添加字
    tf.text = @"";
    tf.textColor = [UIColor cyanColor];

    // 对齐方式
    tf.textAlignment = NSTextAlignmentCenter;

2.输入控制:
这里写图片描述

 //是否允许输入(默认YES)
    tf.enabled = YES;

    // 输入时清除原内容
    tf.clearsOnBeginEditing = YES;

    // 密文输入
    tf.secureTextEntry = YES;

    // 弹出键盘的类型(枚举)
    tf.keyboardType = UIKeyboardTypeDefault;

    // 弹出键盘右下角return按钮 类型
    tf.returnKeyType = UIReturnKeyDone;

    // 自定义键盘
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    view.backgroundColor = [UIColor greenColor];
    tf.inputView = view;
    [view release];

    UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];

    // 键盘辅助视图
    tf.inputAccessoryView = inputView;
    [inputView release];

3.外观控制:
这里写图片描述

 // 边框样式
    tf.borderStyle = UITextBorderStyleRoundedRect;

    // 清除按钮样式(右边的小叉叉)
    tf.clearButtonMode = UITextFieldViewModeWhileEditing;

    // 输入框左视图
    UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
    leftView.backgroundColor = [UIColor purpleColor];
    tf.leftView = leftView;
    tf.leftViewMode = UITextFieldViewModeWhileEditing;
    [leftView release];

    // 输入框右视图
    UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
    rightView.backgroundColor = [UIColor yellowColor];
    tf.rightView = rightView;
    tf.rightViewMode = UITextFieldViewModeUnlessEditing;
    [rightView release];
 4.其他功能: 

    // 利用循环创建UITextField方法(注重tag值的使用)
    for (int i = 0; i < 2; i++) {
        UITextField *ff = [[UITextField alloc] initWithFrame:CGRectMake(50, 120 + (i * 60), 250, 40)];
        ff.backgroundColor = [UIColor yellowColor];
        ff.delegate = self;
        [self.window addSubview:ff];
        [ff release];
    }

    // 设置代理(方法在哪儿实现的 就把谁设置成代理,添加UITextFieldDelegate)
    tf.delegate = self;

    // 第一响应者
    [tf becomeFirstResponder];

     // 键盘回收方法
     - (BOOL)textFieldShouldReturn:(UITextField *)textField
     - {
             // 键盘回收
             // 取消第一响应者
             [textField resignFirstResponder];
           return YES;
       }

       // 设置标签
       tf.tag = 100;
       UITextField *tf = (UITextField *)[self.view viewWithTage:100];

UIButton

按钮:是响应用户点击的控件。
注:UIButton : UIControl : UIView

创建UIButton的步骤:

1、创建button对象(如果本类有初始化方法,使用自己的;否则使用
父类的)。

2、设置按钮显示相关的属性

3、为按钮添加点击事件

4、添加按钮到父视图上,用以显示

5、按钮无需释放(因为使用的是类方法创建的button)

UIButton *loginButton = [UIButton buttonWithType:UIButtonTypeSystem];
loginButton.frame = CGRectMake(30, 200, 60, 30);
[loginButton setTitle:@"登录" forState:UIControlStateNormal];
[loginButton addTarget:self action:@selector(login:)
    forControlEvents:UIControlEventTouchUpInside];
[containerView addSubview:loginButton];

UIButton功能:

1.添加事件:
这里写图片描述

 // 给button添加一个方法
    [button addTarget:self action:@selector(click:) forControlEvents:(UIControlEventTouchUpInside)];

2.外观控制:
这里写图片描述
这里写图片描述

 // 设置某个状态下的标题
    [button setTitle:@"普通" forState:(UIControlStateNormal)];
    [button setTitle:@"高亮" forState:(UIControlStateHighlighted)];
    [button setTitle:@"选中" forState:(UIControlStateSelected)];

    // 给某状态下 设置标题颜色
    [button setTitleColor:[UIColor magentaColor] forState:(UIControlStateNormal)];
    [button setTitleColor:[UIColor greenColor] forState:(UIControlStateHighlighted)];
    [button setTitleColor:[UIColor purpleColor] forState:(UIControlStateSelected)];

    // 给button添加前景图片
    // 创建一张图片
    // 如果不是png格式的图片 需要把后缀加上 如果是png 可以不加后缀
    UIImage *image1 = [UIImage imageNamed:@"Normal"];
    [button setImage:image1 forState:(UIControlStateNormal)];
    UIImage *image2 = [UIImage imageNamed:@"Highlighted"];
    [button setImage:image2 forState:(UIControlStateHighlighted)];
    UIImage *image3 = [UIImage imageNamed:@"Selected"];
    [button setImage:image3 forState:(UIControlStateSelected)];

    // 添加背景图片
    [button setBackgroundImage:[UIImage imageNamed:@"Normal"] forState:(UIControlStateNormal)];
    [button setBackgroundImage:[UIImage imageNamed:@"Highlighted"] forState:(UIControlStateHighlighted)];
    [button setBackgroundImage:[UIImage imageNamed:@"selected"] forState:(UIControlStateSelected)];

小节

UIView是所有可视化控件的基类。
UILabel、UITextField、UIButton是具有特定外观特定功能的视图。
UILabel侧重于文本的呈现。
UITextField侧重于输入。
UIButton侧重于点击事件处理。

delegate

点return回收键盘步骤:
1、将AppDelete作为UITextField的delegate
2、AppDelete.h文件接受UITextFieldDelegate协议
3、AppDelete.m文件实现textFieldShouldReturn:方法

// 利用响应者 实现点击return,光标移到下一个textField
      for (int i = 0; i < 3; i++) {
      UITextField *tf1 = [[UITextField alloc]   initWithFrame:CGRectMake(100, 100 + (i * 60), 180, 40)];
      tf1.backgroundColor = [UIColor lightGrayColor];
      tf1.borderStyle = UITextBorderStyleRoundedRect;
      tf1.textColor = [UIColor blackColor];
      tf1.delegate = self;
      tf1.tag = kTextFieldTag + i;
      [self.window addSubview:tf1];
      [tf1 release];
    }
    return YES;
    }
    // 键盘return按键的键盘回收方法
    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    - {
          // 利用tag值取出下一个textField
        UITextField *tf = (UITextField *)[self.window  viewWithTag:textField.tag + 1];
          // 成为第一响应者
        [tf becomeFirstResponder];
         // 判断是不是最后一个UITextField
        if (textField.tag == 102) {
         // 是最后一个 直接回收键盘
        [textField resignFirstResponder];
    }
    return YES;
    }

ios程序启动流程

main函数始终是程序的入口

任何一个程序,无论是基于Mac OS还是iOS,程序都是从main.m文
件的main函数开始执行的。

  int main(int argc, char * argv[])
    {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil,
     NSStringFromClass([AppDelegate class]));
      }
    }

执行UIApplicationMain函数时做了跳转,转到了AppDelete中
UIApplicationMain在程序入口函数main函数中调用,主要实现了3个功能:
1.创建应用程序(UIApplication)实例
2.创建应用程序代理实例
3.建立事件循环(runloop:死循环,不断检测程序运行状态,是否被触 摸、晃动等)

UIApplicationMain剖析:

int UIApplicationMain (
int argc,
char *argv[],
NSString *principalClassName,
NSString *delegateClassName
);

1、principalClassName:应用程序对象的类名(UIApplication或其子类)
2、delegateClassName:应用程序delegate的类名。(任何接受了 UIApplicationDelegate的类)
UIApplicationMain根据上述两个类名创建应用程序实例、应用程序代理实例。然后建立事件循环(runloop),检测程序的各种事件(程序开始启动,接收到触 摸等等)

应用程序代理

应用程序代理,主要检测应用程序的状态并做出相应的处理。
应用程序的状态有很多,比如:程序启动、进入活跃状态、进到后
台、内存警告、收到远程消息等等
任何接受了UIApplicationDelegate协议的对象都可以成为应用程序 代理。
一旦应⽤用程序的某种状态触发,就会执行相应的代理方法。


UIApplicationDelegate

UIApplicationDelegate是一个OC的协议。里面声明了一堆方法,这些方法都与应用程序运行状态有关,它们由应用程序代理实现。UIApplication 对象负责调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值