第⼆讲:基础视图、程序启动流程


⼀、UITextField

二、UIButton

三、delegate

四、程序启动流程

本讲内容

优化登录界⾯面实际App中的登录界⾯面并⾮非是由⼀一个⼀一个⾊色块组成,⽽而是由标签

(UILabel)、输⼊入框(UITextField)和按钮(UIButton)组成。如何优化我们的登录界⾯面呢?

优化登录界⾯面实际App中的登录界⾯面并⾮非是由⼀一个⼀一个⾊色块组成,⽽而是由标签

(UILabel)、输⼊入框(UITextField)和按钮(UIButton)组成。如何优化我们的登录界⾯面呢?


⼀、UITextField

UITextField是什么?UITextField(输⼊入框):是控制⽂文本输⼊入和显⽰示的控件。在AppUITextField

出现频率也⽐比较⾼高。

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

键盘。

UITextFieldUILabel相⽐比,UILabel主要⽤用于⽂文字显⽰示,不能编辑,UITextField允许⽤用户编辑⽂文字(输⼊入)

项目中哪些地⽅方会⽤用UITextField?

UITextField是什么?UITextField(输⼊入框):是控制⽂文本输⼊入和显⽰示的控件。在AppUITextField

出现频率也⽐比较⾼高。

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

键盘。

UITextFieldUILabel相⽐比,UILabel主要⽤用于⽂文字显⽰示,不能编辑,UITextField允许⽤用户编辑⽂文字(输⼊入)

项⺫⽬目中哪些地⽅方会⽤用UITextField?



UITextField是什么?UITextField(输⼊入框):是控制⽂文本输⼊入和显⽰示的控件。在AppUITextField

出现频率也⽐比较⾼高。

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

键盘。

UITextFieldUILabel相⽐比,UILabel主要⽤用于⽂文字显⽰示,不能编辑,UITextField允许⽤用户编辑⽂文字(输⼊入)

项目中哪些地⽅方会⽤用UITextField?

如何使⽤用UITextField

创建UITextField与创建UILabel的步骤很相似。1、开辟空间并初始化(如果本类有初始化⽅方法,使⽤用⾃自⼰己的;否则使⽤用⽗父类的)。
2、设置⽂文本显⽰示、输⼊入相关的属性
3、添加到⽗父视图上,⽤用以显⽰示
4、释放



UITextField使⽤用⽰示例

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

userNameTextField.placeholder = @"⼿手机号/邮箱";[containerView addSubview:userNameTextField];[userNameTextField release];


UITextField更多UITextField核⼼心功能主要包含3个⽅方⾯面:

⽂文本显⽰示

输⼊入控制

外观配置



二、UIButton


UIButton是什么?UIButton(按钮):是响应用户点击的控件。在AppUIButton是出

现频率很⾼的控件。UIButtonUILabelUITextField侧重点不同,侧重于处理点按。当

UIButton类也提供了⼀一些⽅方法控制按钮外观。

项目中哪些地⽅方会⽤用UIButton?


如何使⽤用UIButton

创建UIButton与创建UILabelUITextFieldUIView的步骤很相似。

1、创建button对象(如果本类有初始化⽅方法,使⽤用⾃自⼰己的;否则使⽤用⽗父类的)。
2、设置按钮显⽰示相关的属性

3、为按钮添加点击事件

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

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


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

UIButton添加事件UIButton从⽗父类UIControl那继承了控制相关的⽅方法,⽐比如添加事

件、移除事件等。


注:UIButton : UIControl : UIView


UIButton添加事件


外观控制

UIButton提供了外观控制的API。包括标题、背景图⽚片、前景图⽚片等




⼩节UIView是所有可视化控件的基类。

UILabelUITextFieldUIButton是具有特定外观特定功能的视图。UILabel侧重于⽂文本的呈现。
UITextField侧重于输⼊入。
UIButton侧重于点击事件处理。


三、delegate


delegate点击键盘上的return按钮,如何去响应事件?

return回收键盘

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

1、将AppDelete作为UITextFielddelegate

2AppDelete.h文件接受UITextFieldDelegate协议

3AppDelete.m文件实现textFieldShouldReturn:方法


键盘回收代码

AppDelegate.m
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];

return YES;}


⼩节

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

对于⼀一个V来说,⾃自⼰己只负责触发事件,事件由外界实现,即delegate



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


UIApplicationMainUIApplicationMain在程序⼊入⼝口函数main函数中调⽤用,主要实现了3

功能:创建应⽤用程序(UIApplication)实例创建应⽤用程序代理实例

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



UIApplicationMain剖析

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

);!1principalClassName:应⽤用程序对象的类名(UIApplication或其⼦子类)!2delegateClassName:应⽤用程序delegate的类名。(任何接受了UIApplicationDelegate的类)!UIApplicationMain根据上述两个类名创建应⽤用程序实例、应⽤用程序代理实例。

然后建⽴立事件循环(runloop),检测程序的各种事件(程序开始启动,接收到触摸等等)


应⽤用程序代理

 应⽤用程序代理,主要检测应⽤用程序的状态并做出相应的处理。
 应⽤用程序的状态有很多,⽐比如:程序启动、进⼊入活跃状态、进到后
台、内存警告、收到远程消息等等

任何接受了UIApplicationDelegate协议的对象都可以成为应⽤用程序代理。

 ⼀一旦应⽤用程序的某种状态触发,就会执⾏行相应的代理⽅方法。


UIApplicationDelegateUIApplicationDelegate是⼀一个OC的协议。⾥里⾯面声明了⼀一堆⽅方法,这些⽅方

法都与应⽤用程序运⾏行状态有关,它们由应⽤用程序代理实现。UIApplication对象负责调⽤用。

!

!



UIApplicationDelegate




UIWindowUIWindow作为应⽤用程序的窗⼝口,在应⽤用程序启动的时候就要加载,各种UI界⾯面都是借助window来呈现的。

UIWindow在创建的时候,应该和屏幕⼀一样⼤大。通过[UIScreenmainScreen].bounds可以获得屏幕⼤大⼩小。

[self.window makeKeyAndVisible];//window变的可视,即显⽰示window


总结UILabelUITextFieldUIButton都是特别常⽤用的控件。

他们都是直接或者间接继承于UIView,只是外观和功能不同。熟悉各种控件的特点和⽅方法是我们后期做项目的保障。delegateiOS重要的设计模式,理解它的原理,有助于写出优质代码

main函数是程序的⼊入⼝口。UIApplicationMain函数创建了应⽤用程序实例,应⽤用程序代理实例,建⽴立事件循环。


课程预告

⾃自定义视图

视图控制器 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值