UI案例——登陆系统

UI的登陆界面实例

在学习了UILabel,UIButton,UIView,UITextField的内容之后,我们就可以写一个简单的登陆界面

我们可以通过UILabel来编写我们显示在登陆界面上的文字比方说下面这两行字就是通过UILabel去实现的。

在这里插入图片描述

下面给出一下实现的代码

_lbUserName = [[UILabel alloc] init];_lbUserName.frame = CGRectMake(20, 60, 80, 40);//设置位置和大小_lbUserName.text = @"用户名";_lbUserName.font = [UIFont systemFontOfSize:20];//设置字体大小_lbUserName.textAlignment = NSTextAlignmentLeft;_lbUserPassword = [[UILabel alloc] initWithFrame:CGRectMake(20, 140, 80, 40)];_lbUserPassword.text = @"密码";_lbUserPassword.font = [UIFont systemFontOfSize:20];_lbUserPassword.textAlignment = NSTextAlignmentLeft;

为了给用户返回提示,设计了一个警告对话框来用于给用户返回提示,这个警告对话框是通过UIAlertController来实现的,下面给出代码

在这里插入图片描述

				UIAlertController* alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"用户名和密码正确" preferredStyle:UIAlertControllerStyleAlert];//p1:标题名字,p2:显示的信息,p3是用来指定 UIAlertController 的样式的。UIAlertControllerStyleAlert 是其中一种可选的样式。UIAlertAction* confirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) {NSLog(@"点击确认");}];//UIAlertAction 是用来创建 UIAlertController 中的按钮的。p1:按钮标题,p2:风格,p3:按钮的点击事件处理[alertController addAction:confirm];//给这个弹窗添加上确认这个按钮UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) {NSLog(@"点击取消");}];[alertController addAction: cancel];[self presentViewController:alertController animated:YES completion:nil];

创建登陆和注册两个按钮,来实现点击登陆的效果

在这里插入图片描述

		_btLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect];_btLogin.frame = CGRectMake(120, 300, 80, 40);[_btLogin setTitle:@"登陆" forState:UIControlStateNormal];//设置按钮类型[_btLogin addTarget:self action:@selector(pressLogin) forControlEvents:UIControlEventTouchUpInside];//为按钮添加点击事件[self.view addSubview:_btLogin];

下面给出一下整体实现的代码

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor orangeColor];_lbUserName = [[UILabel alloc] init];_lbUserName.frame = CGRectMake(20, 60, 80, 40);_lbUserName.text = @"用户名";_lbUserName.font = [UIFont systemFontOfSize:20];_lbUserName.textAlignment = NSTextAlignmentLeft;_lbUserPassword = [[UILabel alloc] initWithFrame:CGRectMake(20, 140, 80, 40)];_lbUserPassword.text = @"密码";_lbUserPassword.font = [UIFont systemFontOfSize:20];_lbUserPassword.textAlignment = NSTextAlignmentLeft;[self.view addSubview:_lbUserName];[self.view addSubview:_lbUserPassword];_tfUserName = [[UITextField alloc] initWithFrame:CGRectMake(120, 60, 150, 40)];_tfUserName.placeholder = @"请输入用户名";_tfUserName.borderStyle = UITextBorderStyleRoundedRect;_tfUserPassword = [[UITextField alloc] initWithFrame:CGRectMake(120, 140, 150, 40)];_tfUserPassword.placeholder = @"请输入密码";_tfUserPassword.borderStyle = UITextBorderStyleRoundedRect;_tfUserPassword.secureTextEntry = YES;[self.view addSubview:_tfUserName];[self.view addSubview:_tfUserPassword];_btLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect];_btLogin.frame = CGRectMake(120, 300, 80, 40);[_btLogin setTitle:@"登陆" forState:UIControlStateNormal];[_btLogin addTarget:self action:@selector(pressLogin) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:_btLogin];_btRegister = [UIButton buttonWithType:UIButtonTypeRoundedRect];_btRegister.frame = CGRectMake(120, 360, 80, 40);[_btRegister setTitle:@"注册" forState:UIControlStateNormal];[_btRegister addTarget:self action:@selector(pressRegister) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:_btRegister];// Do any additional setup after loading the view.
}
- (void) pressLogin {NSString* strName = @"michael";NSString* strPass = @"12345678";if ([strPass isEqual: _tfUserPassword.text] && [strName isEqual: self.tfUserName.text]) {NSLog(@"用户名密码正确");UIAlertController* alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"用户名和密码正确" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction* confirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) {NSLog(@"点击确认");}];[alertController addAction:confirm];UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) {NSLog(@"点击取消");}];[alertController addAction: cancel];[self presentViewController:alertController animated:YES completion:nil];} else {NSLog(@"用户名或密码错误");UIAlertController* alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"用户名或密码错误" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction* confirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) {NSLog(@"点击确认");}];[alertController addAction:confirm];UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) {NSLog(@"点击取消");}];[alertController addAction: cancel];[self presentViewController:alertController animated:YES completion:nil];}
}
- (void) pressRegister {NSLog(@"ddd");
}-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {[_tfUserName resignFirstResponder];[_tfUserName resignFirstResponder];
}
@end

最后实现的效果:

在这里插入图片描述

登陆成功的界面:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/340931.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直播美颜插件详解:美颜SDK的技术原理

美颜SDK作为实现美颜功能的核心技术&#xff0c;已被广泛应用于各种直播和短视频应用中。那么&#xff0c;美颜SDK究竟是如何工作的&#xff1f;它背后的技术原理又是什么&#xff1f;本文将对直播美颜插件及其技术原理进行详解。 一、美颜SDK的概述 美颜SDK包含了各种图像处…

二叉树遍历 和 线索二叉树

文章目录 1.1 二叉树遍历1.1 前提问题1&#xff1a; 什么叫二叉树的遍历&#xff1f;二叉树的三种遍历&#xff1a;三个概念&#xff1a;遍历 和 访问 和 经过重要概念&#xff1a;遍历过程中的经过节点&#xff0c;不代表访问节点 问题2&#xff1a;遍历和访问的联系&#xff…

【代码+详解】算法题 : 最大公约数

❗❗❗必看: 下列题我全部都使用 Java 语言写的,并且均可以提交成功,获得Accepted 结果的. 如果代码和详解看了之后,对答案有任何疑问,都可以在评论区提出来,我都会一个一个回答. ❗❗❗感谢大家的支持,如果喜欢我的博客,关注 点赞 收藏 评论一波,非常感谢!!! 文章目录 题目&…

思维导图——幕布

一、前言 幕布是一款专注于简化和组织信息的大纲笔记应用&#xff0c;它旨在帮助用户高效地整理知识点、优化工作流程以及规划个人生活。 二、软件特点 幕布工具的核心优势在于其能够快速将用户的输入转换成清晰的思维导图&#xff0c;便于视觉化地理解和记忆信息。 幕布还具…

分集增益Diversity Gain与复用增益Multiplexing Gain

文章目录 概念DoF&#xff08;Degrees of Freedom&#xff09;复用增益&#xff08;Multiplexing Gain&#xff09;自由度&#xff08;Degrees of Freedom, DoF&#xff09;两者的关系实际应用关系总结具体关系例子结论 近场MIMO的分集与复用与远场MIMO有何不同 概念 在通信领…

HttpClient cookie爬虫记录

记录一次java语言使用httpclient爬取网站接口数据的经历 需要用到的依赖&#xff1a; httpclient和httpcore是封装了http请求的工具类 jsoup可以将返回的网页html找到你需要的xml节点&#xff0c;很方便 <dependency><groupId>org.apache.httpcomponents</gr…

通过DirectML和ONNXRuntime运行Phi-3模型

更多精彩内容&#xff0c;欢迎关注我的公众号“ONE生产力”&#xff01; 上篇我们讲到通过Intel Core Ultra系列处理器内置的NPU加速运行Phi-3模型&#xff0c;有朋友评论说他没有Intel处理器是否有什么办法加速Phi-3模型。通常&#xff0c;使用GPU特别是NVIDA的GPU加速AI模型…

windows上安装MongoDB,springboot整合MongoDB

上一篇文章已经通过在Ubuntu上安装MongoDB详细介绍了MongoDB的各种命令用法。 Ubuntu上安装、使用MongoDB详细教程https://blog.csdn.net/heyl163_/article/details/133781878 这篇文章介绍一下在windows上安装MongoDB&#xff0c;并通过在springboot项目中使用MongoDB记录用户…

SpaceX: 太空火箭自主精准着陆

本文是根据Lars Blackmore在16年的一篇公开论文翻译而来&#xff0c;虽然有些早而且是科普文章&#xff0c;但是可以初见一些SpaceX火箭着陆的细节&#xff0c;后面我会对spaceX landing control 技术主管MIT博士期间研究火箭控制算法的论文进行讲解&#xff0c;敬请期待。 Lar…

【php实战项目训练】——thinkPhP的登录与退出功能的实现,让登录退出畅通无阻

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

C/C++ 进阶(5)二叉平衡搜索树(AVL树)

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 目录 一、概念 二、平衡因子 三、操作 插入 旋转 左单旋 右单旋 左右双旋 右左双旋 一、概念 二叉平衡搜索树又称AVL树&#xff0c;是一种特殊的二叉搜索树。一般的二叉搜索树在遇到数据有序时&…

SOLIDWORKS修改零件时出现错误怎么办?

我们在使用SOLIDWOKRS进行零件建模过程中往往避免不了修改&#xff0c;但在修改后又常常会出现零件报错的情况&#xff0c;设计树中会出现一堆的错误和警告&#xff0c;我们如何快速处理这些问题呢&#xff1f; 我们都知道SOLIDWOKRS零件通常包含两大类的对象&#xff0c;分别…

Docker 入门版

目录 1. 关于Docker 2. Dockr run命令中常见参数解读 3. Docker常见命令 4. Docker 数据卷 5. Docker本地目录挂载 6. 自定义镜像 Dockerfile 语法 自定义镜像模板 Demo 7. Docker网络 1. 关于Docker 在docker里面下载东西&#xff0c;就是相当于绿色面安装板&#x…

python之生成器表达式

背景 生成器表达式&#xff0c;整个表达式都是另一个函数的唯一入参&#xff0c;则不需要带括号&#xff1b;若他只是其中一个参数&#xff0c;则需要圆括号包裹。 演示

响应式流和reactor框架进阶

响应式流和reactor框架进阶 响应式流创建、转换、处理 本文档主要介绍在响应式编程中如何从流中获取数据并处理。 前提条件 假设您已经能掌握Java基础、Maven使用、Lamda表达式、响应式编程等基础。 如何获取流中数据 &#x1f30f; 说明 1、不要试图从流中获取数据出来&a…

MMUNet:形态学特征增强网络在结肠癌病理图像分割中的应用

MMUNet: Morphological feature enhancement network for colon cancer segmentation in pathological images. 发表在&#xff1a;Biomedical Signal Processing and Control2024--影响因子&#xff1a;3.137 南华大学的论文 论文地址&#xff1a;main.pdf (sciencedirecta…

地理信息科学中的大数据挑战

在信息化爆炸的时代&#xff0c;地理信息科学&#xff08;GIScience&#xff09;正经历着前所未有的变革&#xff0c;其中&#xff0c;地理空间大数据的涌现为科学研究与应用带来了前所未有的机遇与挑战。作为地理信息与遥感领域的探索者&#xff0c;本文旨在深入剖析地理空间大…

找不到steam_api64.dll,无法继续执行的原因及解决方法

电脑已经成为我们生活中不可或缺的一部分。然而&#xff0c;在使用电脑的过程中&#xff0c;我们经常会遇到一些常见的问题&#xff0c;其中之一就是找不到某个特定的动态链接库文件&#xff0c;比如steamapi64.dll。这个问题可能会导致某些应用程序无法正常运行&#xff0c;给…

音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解

文章目录 前言1.模拟数字转换&#xff08;ADC&#xff09;1.1ADC的关键步骤&#xff1a; 2.数字模拟转换&#xff08;DAC&#xff09;2.1DAC 的基本流程包括&#xff1a; 3.PCM数据3.1PCM 数据的关键要素包括&#xff1a; 4.WAV文件4.1 WAV的构成4.2WAV文件的标准块结构4.3WAV的…

kettle从入门到精通 第六十五课 ETL之kettle 执行动态SQL语句,轻松实现全量增量数据同步

本次课程的逻辑是同步t1表数据到t2表&#xff0c;t1和t2表的表机构相同&#xff0c;都有id&#xff0c;name,createtime三个字段。 CREATE TABLE t1 (id bigint NOT NULL AUTO_INCREMENT,name varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,cr…