进击的KFC:UI(二)基础视图、程序启动流程

2023-12-22 08:38

本文主要是介绍进击的KFC:UI(二)基础视图、程序启动流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本讲主要讲基础视图:UITextField,UIButton,delegate以及程序的启动流程

一.#pragma mark ——-UITextField
UITextField(输⼊框):是控制⽂本输⼊和显⽰的控件。在App中UITextField出现频率也⽐较⾼。
UITextField和UILabel相⽐,UILabel主要⽤于⽂字显⽰,不能编辑,UITextField允许⽤户编辑⽂字(输⼊)。

可以看出UITextField继承UIControl,而UIControl继承于UIView,所以UITextField具有UIView里的所有方法,所以,我们用初始化UIView的方法来初始化UITextField:
1、开辟空间并初始化(如果本类有初始化⽅法,使⽤⾃⼰的;否则使⽤⽗类的)。

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100,100,100,100)];

2、设置⽂本显⽰、输⼊相关的属性
2-1.文本显示:
这里写图片描述

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

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

3、添加到⽗视图上,⽤以显⽰
[self.window addSubView:textField];

二.#pragma mark ——-UIButton
UIButton(按钮):是响应⽤户点击的控件。在App中UIButton是出现频率很⾼的控件。
UIButton与UILabel、UITextField侧重点不同,侧重于处理点按。当然UIButton类也提供了⼀些⽅法控制按钮外观。
UIButton继承UIControl,但它的初始化和其他控件的不同,他是用类方法初始化的
1、创建button对象(如果本类有初始化⽅法,使⽤⾃⼰的;否则使⽤⽗类的)。

UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];

2、设置按钮显⽰相关的属性
外观控制:
这里写图片描述
这里写图片描述

3、为按钮添加点击事件
这里写图片描述

4、添加按钮到⽗视图上,⽤以显⽰
[self.window addSubView:button];

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

三.#pragma mark ——-delegate
需求:点return回收键盘
点击键盘return按钮实现键盘回收的步骤:
1、将AppDelete作为UITextField的delegate

     textField.delegate = self;

2、AppDelete.h⽂件接受UITextFieldDelegate协议

      @interface AppDelegate : UIResponder   <UIApplicationDelegate>

3、AppDelete.m⽂件实现textFieldShouldReturn:⽅法

- (BOOL)textFieldShouldReturn:(UITextField *)textField {// 取消textfield第一响应者的身份,让键盘回去 (因为点击了textfield,成为了第一响应者,然后键盘出来了)所以,只要取消textfield第一响应者的身份,键盘就会回去[textField resignFirstResponder];return YES;
}

⼩节;
UITextField不应该在类内部(.m⽂件)实现textFieldShouldReturn:,因为有时候,我们点return的时候,并不总是想回收键盘,例如:有两个输⼊框,第⼀个输⼊框输⼊完成之后,⽤户点return按钮,将光标移动到第⼆个输⼊框(即:第⼆个输⼊框称为第⼀响应者)
对于⼀个V来说,⾃⼰只负责触发事件,事件由外界实现,即
delegate。

四、#pragma mark ——-iOS程序启动流程
4.1main函数是程序⼊⼝

任何⼀个程序,⽆论是基于Mac OS还是iOS,程序都是从main.m⽂
件的main函数开始执⾏的。
int main(int argc, char * argv[])
{@autoreleasepool {return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));}
} 执⾏UIApplicationMain函数时做了跳转,转到了AppDelete中

4.2UIApplicationMain
UIApplicationMain在程序⼊⼝函数main函数中调⽤,主要实现了3个
功能:
创建应⽤程序(UIApplication)实例
创建应⽤程序代理实例
建⽴事件循环(runloop:死循环,不断检测程序运⾏状态,是否被触
摸、晃动等)

4.3UIApplicationMain剖析

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

4.4应⽤程序代理
应⽤程序代理,主要检测应⽤程序的状态并做出相应的处理。
应⽤程序的状态有很多,⽐如:程序启动、进⼊活跃状态、进到后
台、内存警告、收到远程消息等等
任何接受了UIApplicationDelegate协议的对象都可以成为应⽤程序
代理。
⼀旦应⽤程序的某种状态触发,就会执⾏相应的代理⽅法。
UIApplicationDelegate
这里写图片描述

4.5UIWindow
UIWindow作为应⽤程序的窗⼝,在应⽤程序启动的时候就要加载,
各种UI界⾯都是借助window来呈现的。
UIWindow在创建的时候,应该和屏幕⼀样⼤。通过[UIScreen
mainScreen].bounds可以获得屏幕⼤⼩。
[self.window makeKeyAndVisible];//让window变的可视,即显⽰window。

总结:
UILabel、UITextField、UIButton都是特别常⽤的控件。
他们都是直接或者间接继承于UIView,只是外观和功能不同。
熟悉各种控件的特点和⽅法是我们后期做项⺫的保障。
delegate是iOS重要的设计模式,理解它的原理,有助于写出优质代码
main函数是程序的⼊⼝。UIApplicationMain函数创建了应⽤程序实例,应
⽤程序代理实例,建⽴事件循环。

这篇关于进击的KFC:UI(二)基础视图、程序启动流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/523305

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert