• iOS开发-UI 从入门到精通(四)


    一、UITextField

    1、UITextField是什么?

    (1)UITextField(输入框):是控制文本输入和显示的控件。在App中UITextField出现频率也比较高;

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

    (3)UITextField和UILabel相比,UILabel主要用于文字显示,不能编辑, UITextField允许用户编辑文字(输入)。

    2、如何使用UITextField?

    (1)创建UITextField与创建UILabel的步骤很相似。

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

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

      ③添加到父视图上,用以显示;

      ④释放。

    3、UITextField使用示例:

      UITextField *userNameTextField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 190, 30)];

      userNameTextField.borderStyle =UITextBorderStyleRoundedRect;

      userNameTextField.placeholder = @"手机号/邮箱";

      [containerView addSubview:userNameTextField];

      [userNameTextField release];

    4、UITextField更多:

    (1)UITextField核心功能主要包含3个方面:

      ①文本显示 ②输入控制 ③外观配置

    5、文本显示:

    (1)UITextField提供了许多API方便我们控制文本的显示。 包括字体颜色、对齐方式、占位符等等(详见下表)

      

    6、输入控制:

    (1)UITextField类提供了许多控制输入的API。 包括密码模式、键盘样式、自定义键盘等(详见下表)

      

    7、外观控制:

      UITextField同样提供了外观控制的API。 包括边框样式、清除按钮、辅助视图等;

      

    二、UIButton

    1、UIButton是什么?

    (1)UIButton(按钮):是响应用户点击的控件。在App中UIButton是出现频率很高的控件;

    (2)UIButton与UILabel、UITextField侧重点不同,侧重于处理点按。当然UIButton类也提供了一些方法控制按钮外观。

    2、如何使用UIButton?

    (1)创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。

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

      ②设置按钮显示相关的属性;

      ③为按钮添加点击事件;

      ④添加按钮到父视图上,用以显示;

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

    3、UIButton使用示例:

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

    4、UIButton添加事件:

    (1)UIButton从父类UIControl那继承了控制相关的方法,比如添加事件、移除事件等。

      注:UIButton : UIControl : UIView(详见下表)

      

    5、外观控制:

    (1)UIButton提供了外观控制的API。 包括标题、背景图⽚片、前景图⽚片等(详见下表)

      

      

    6、小节:

    (1)UIView是所有可视化控件的基类;

    (2)UILabel、UITextField、UIButton是具有特定外观特定功能的视图;

    (3)UILabel侧重于文本的呈现;

    (4)UITextField侧重于输入;

    (5)UIButton侧重于点击事件处理。

    三、delegate

    1、点return回收键盘:

    (1)点击键盘return按钮实现键盘回收的步骤:

      ①将AppDelete作为UITextField的delegate;

      ②AppDelete.h文件接受UITextFieldDelegate协议;

      ③AppDelete.m文件实现textFieldShouldReturn:方法)。

    2、键盘回收代码:

    AppDelegate.m

    1 - (BOOL)textFieldShouldReturn:(UITextField *)textField
    2 {
    3     [textField resignFirstResponder];
    4 
    5     return YES;
    6 }

    3、小节:

    (1)UITextField不应该在类内部(.m文件)实现textFieldShouldReturn:, 因为有时候,我们点return的时候,并不总是想回收键盘,例如:有两个输入框,第一个输入框输入完成之后,用户点return按钮,将光标移动到第二个输入框(即:第二个输入框称为第一响应者);

    (2)对于一个V来说,自己只负责触发事件,事件由外界实现,即 delegate。

    四、iOS程序启动流程

    1、mian函数是程序入口:

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

    2、UIApplicationMain:

    (1)UIApplicationMain在程序入口函数main函数中调用,主要实现了3个功能:

      ①创建应用程序(UIApplication)实例;

      ②创建应用程序代理实例;

      ③建立事件循环(runloop:死循环,不断检测程序运行状态,是否被触摸、晃动等)。

    3、UIApplicationMain剖析:

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

    (1)principalClassName:应用程序对象的类名(UIApplication或其子类);

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

    4、应用程序代理:

    (1)应用程序代理,主要检测应用程序的状态并做出相应的处理;

    (2) 应用程序的状态有很多,比如:程序启动、进入活跃状态、进到后台、内存警告、收到远程消息等等;

    (3)任何接受了UIApplicationDelegate协议的对象都可以成为应用程序代理;

    (4)一旦应用程序的某种状态触发,就会执行相应的代理方法。

    5、UIApplicationDelegate:

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

      

    6、UIWindow:

    (1)UIWindow作为应用程序的窗口,在应用程序启动的时候就要加载,各种UI界面都是借助window来呈现的;

    (2)UIWindow在创建的时候,应该和屏幕一样大。通过[UIScreen mainScreen].bounds可以获得屏幕大小;

    (3)[self.window makeKeyAndVisible];//让window变的可视,即显示 window。

    五、总结

    (1)UILabel、UITextField、UIButton都是特别常用的控件;

    (2)他们都是直接或者间接继承于UIView,只是外观和功能不同;

    (3)熟悉各种控件的特点和方法是我们后期做项目的保障;

    (4)delegate是iOS重要的设计模式,理解它的原理,有助于写出优质代码;

    (5)main函数是程序的入口。UIApplicationMain函数创建了应用程序实例,应 用程序代理实例,建立事件循环。

    六、下一篇将持续更新配套知识点练习;

     Email:dingding3w@126.com

  • 相关阅读:
    luogu 1169 棋盘制作(单调栈/悬线)
    poj 2769 感觉♂良好 (单调栈)
    hdu 5033 buiding(单调栈)
    hdu1506 直方图中最大的矩形 单调栈入门
    有线电视网(树形dp)
    洛谷P1220 关路灯(区间dp)
    【题解】NOI2009二叉查找树 + NOIP2003加分二叉树
    【题解】AHOI2009中国象棋
    【算法】Matrix
    【题解】WC2008游览计划
  • 原文地址:https://www.cnblogs.com/dingding3w/p/4631608.html
Copyright © 2020-2023  润新知