一、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

 - (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder]; return YES;
}

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

iOS开发-UI 从入门到精通(四)的更多相关文章

  1. iOS开发-UI 从入门到精通(二)

    iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI ...

  2. iOS开发-UI 从入门到精通(三)

    iOS开发-UI 从入门到精通(三)是对 iOS开发-UI 从入门到精通(一)知识点的综合练习,搭建一个简单地登陆界面,增强实战经验,为以后做开发打下坚实的基础! ※在这里我们还要强调一下,开发环境和 ...

  3. iOS开发-UI 从入门到精通(一)

    一.UI概述 (1)UI(User Interface)用户界面,用户能看到的各种各样的页面元素: (2)iOS App = 各种各样的UI控件+业务逻辑和算法: (3)想要开发出一款精美的应用程序, ...

  4. iOS开发-UI 从入门到精通(五)

    近日在做项目的时候,为了快捷适配屏幕采用了Storyboard,添加约束以后运行后发现一个问题(下面将以普通案例展示该问题);在4.7 甚至更大的屏幕下是没有问题的,如下图(4.7屏幕): 但是放到更 ...

  5. iOS开发——UI进阶篇(十四)modal

    一.modal与pushmodal从下面往上盖住原来的控制器,一般上一个控制器和下一个控制器没有什么关联时用modal,比如联系人的加号跳转页面,任何控制器都可以用modal push一般是上下文有关 ...

  6. iOS开发UI篇—CAlayer(创建图层)

    iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...

  7. iOS开发UI篇—CALayer简介

    iOS开发UI篇—CALayer简介   一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实 ...

  8. iOS开发UI篇—核心动画(转场动画和组动画)

    转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...

  9. iOS开发UI篇—核心动画(基础动画)

    转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...

随机推荐

  1. Windows系统盘占用空间分析

    磁盘分析 本机的系统盘是C盘,操作系统是Windows 7 专业版,通过磁盘属性可以看到C盘的已用空间是69.4G. 而我们运行自己编写的脚本(脚本程序参考附录,统计原理:计算目录下各个文件的大小,然 ...

  2. Android,App 常用图标尺寸规范

    程序启动图标(Logo): 小屏ldpi() 36 x 36 px. 中屏mdpi(160dpi):48*48px 大屏hdpi(240dpi):72*72px 特大屏xhdpi(320dpi):96 ...

  3. 虚拟化 - 每天5分钟玩转 OpenStack(2)

    OpenStack是云操作系统,要学习OpenStack,首先需要掌握一些虚拟化和云计算的相关知识. 虚拟化 虚拟化是云计算的基础.简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享 ...

  4. 关于JqueryEasyUI集合Kindeditor

    写在前面 上一篇<初试JqueryEasyUI(附Demo)>: 在上一篇说过,下面要试下easyui集合编辑器,关于编辑器网上有很多,ckeditor.ueditor.kindedito ...

  5. 【实时】DevExpress内存监视

    前言 在做项目的时候,我们有时候需要检测项目的内存占用情况,有时候是检测内存泄露~,有时候是查看某段代码执行前后的内存对比,以方便找出问题并以解决. 内存泄漏也称作“存储渗漏”,用动态存储分配函数动态 ...

  6. sublime3破解版sublime3注册码

    Sublime Text 3 官方网址:http://www.sublimetext.com/ Mac下载地址: http://c758482.r82.cf2.rackcdn.com/Sublime% ...

  7. 触屏touch事件记录

    一.chrome中的Remote Debugging 一开始并没有用这个调试,不过后面需要多点触碰,可chrome模拟器中我没看到这个功能.突然看到了Remote Debugging,网站需要FQ才能 ...

  8. 探秘Tomcat——启动篇

    tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container.具体请看下图: 从图中可以看出 a. 高亮的两块是Conne ...

  9. ActiveX(四) mshtml 命名空间 重要接口简介

    在上一篇随笔 ActiveX(三)ActiveX 调用 Js 中,我们已经可以获得js中window对象的强类型接口.即 mshtml.IHTMLWindow2 ,通过该接口.我们可以调用js函数.那 ...

  10. CSS基础之居中显示

    这些天忙完了一些项目后,终于有时间来总结一下了.自己就把做项目过程中的体会和理解到的一些东西和大家分享一下.有错请指正!! 在css中,元素居中显示,是基础也是一个小难点.我们经常不知为何总是不能把元 ...