8--UI 初步认识 简易计算器

2023-11-20

UI是App的根基:一个App应该是先有UI界面,然后在UI的基础上增加实用功能(2)UI相对简单易学:UI普遍是学习过程中最简单的一块,能快速拥有成就感和学习兴趣(3)UI至关重要:开发中的绝大部分时间都在处理UI

谨记一条IOS软件开发定律:万物皆对象,UI界面上的每一个元素都是一个对象

IOS,android 软件开发过程

 

 

UIKit框架是跟UI有关系的,标签,文本,按钮,进度条,开关等控件,都是封装在UIKit框架内部的,UIKit框架中提供了丰富多彩的可视化组件 元素,利用UIKit框架提供的类来创建各种可视化组件对象,最后组成复杂而美观的UI界面。 为了方便开发者开发出强大的功能,苹果提供了各种各样的框 架(1)UIKit:创建和管理应用程序的用户界面(2)QuartzCore:提供动画特效以及通过硬件进行渲染的能力 (3)CoreGraphics:提供2D绘制的基于C的API(4)CoreLocation:使用GPS和WIFI获取位置信息(5)MapKit: 为应用程序提供内嵌地图的接口(6)AVFoundation:音频、视频处理(7)……

在开发过程中需要用到一些特殊功能时,可以先尝试使用系统自带的框架。

通过一个简单的计算器的开发,来学习和认识IOS 开发的基础控件

 

分析一下这个简易的计算机程序 需要分哪几步进行:

(1): 需要两个输入框 是 text 按钮;  + = 是lable 标签需要两个 还需要一个计算的 button;

(2)监听按钮的点击事件----点击计算按钮之后执行什么操作

(3)取得2个文本框值 将计算好的最终结果显示到右边的文本标签上

什么是控件?能在界面上看得到的,可以进行交互的,就是控件 常用的控件介绍:

 

上述这些都是控件;

UILabel—文本标签:显示一串固定的文字

UIButton – 按钮:监听用户的点击事件,在用户点击后做出响应

UITextField – 文本输入框,文本输入框可以弹出键盘,让用户输入文本内容 

UIView:屏幕上能看得见摸得着的东西就是UIView,比如屏幕上的按钮、文字、图片,一般翻译叫做:视图/控件/组件。

UIButton、UILabel、UITextField都继承自UIView,每一个UIView都是一个容器,能容纳其他UIView(比如整个键盘是一个UIView,里面容纳很多小格子的数字UIView) 在“加法计算器”中,最后面那块白色的全屏的东西也是一个UIView,白色的大UIView中容纳了很多小的UIView,视图层次结构如下图所示

 

在白色的大UIView中,容纳了6个小UIView(1个UIButton、2个UITextField、3个UILabel),白色的大UIView为6个小UIView的父控件(父视图),6个小UIView都是白色大UIView的子控件(子视图)。 每一个新的界面都是一个新的UIView,在切换过程中,涉及到了:1、UIView的创建和销毁2、UIView跟用户的交互(处理UIView内部每一行的点击)这 是视图控制器 viewController 的工作,UIView 负责显示,控制器来控制视图。每当显示一个新界面时,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏 UIView,UIViewController负责管理这个UIView。UIViewController就是UIView的大管家,负责创建、显 示、销毁UIView,负责监听UIView内部的事件,负责处理UIView与用户的交互。大部分代码都是写在控制 器。 UIViewController内部有个UIView属性,就是它负责管理UIView对象

 

先进行 UI 设计,使用单视图页面进行开发(常用),Single View Application是最适合初学者的模板.

先来看一下故事板 就是上图中所描述的 storyboard 简单的说就是显示UI界面的程序

程序一启动就会显示箭头所指的界面 在iOS5之前,苹果使用xib文件来描述UI界面,在iOS5之后,苹果采取了更加强大和先进的storyboard文件来描述界面(Xcode5是基于iOS7),因此,可以得出结论:修改项目中的Main.storyboard文件就可以修改UI界面。 打开Main.storyboard文件一看,里面有一个全白的界面,这个界面就是模拟器上显示的界面。 往storyboard的界面中添加其他控件,得显示工具栏

 

注意:在属性查看器里,更改控件显示的内容,控件不会自动调节自己的宽度,而双击控件填写内容,控件会自动调整宽度来适应填写的内容。

因此可以使用鼠标或者键盘的方向键进行调节,由于苹果的官方限制 在应该使用数字的地方,必须只能输入数字,否则无法通过。也就是说,本来应该输入数字,最起码弹出的键盘应该是数字键盘,而不是如图所示。改进方法:在属性查看器里,找到 keyboard 属性,修改为 number。

 

另外在新版本的 XCODE 里面取消了键盘和虚拟键盘之前的通用,如果模拟器不弹出虚拟键盘,需要将模拟器里面的键盘设置取消联接物理键盘即可.

和界面进行关联: 先点击 UI 按钮,然后按住 ctrl 键不放,会出现一条线将改线已到对应的方法上等待变为圆圈即可关联成功.

 

 

小结:

 

IOS 程序的开发步骤:

 

1、设计界面

 

2、连线关联

 

3、写代码实现功能(最难,最复杂 )


故事板:本质是一个 xml 文件,可以手动的设置程序启动时加载的storyboard是哪个这个设置表明:程序启动时会加载Main.storyboard 了解延迟加载和懒加载的概念在程序需要的时候,才加载到内存里,效率上变低了,但是程序的内存消耗小了,这就是苹果手机的性能优化的好的原因之一!

简单加法计算器的运行过程

1. 读取Main.storyboard文件

2.创建箭头所指的ViewController对象

3.根据storyboard文件中描述创建 ViewController的UIView对象

4.将UIView对象显示到用户眼前 现在已经知道:应该由ViewController来监听按钮的 点击,换句话说,ViewController应该提供一个方法出来,当用户点击按钮时,就调用这个方法来通知ViewController按钮被人点了。ViewController就在这个方法中实现想做的任何事情,比如计算2个文本输入框内值的和。 退出键盘的两种方式resignFirstResponder当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘 endEditing只要调用这个方法的控件内部存在第一响应者,就能退出键盘 苹果官方建议:从 xcode5开始,把不对外开放的属性和方法声明,放到 .m 文件内。

A: 设置Text1 Text2 和 lable3属性:

 1 //
 2 //  ViewController.h
 3 //  01-第一个 IOS 程序
 4 //
 5 //  Created by Stephen on 16/4/2.
 6 //  Copyright © 2016年 Stephen. All rights reserved.
 7 //
 8 
 9 #import <UIKit/UIKit.h>
10 
11 @interface ViewController : UIViewController
12 // 申明一个方法来监听按钮的动作
13 
14 - (IBAction)btnClick;  // IBAction 对应的是方法
15 
16 /*
17  BAction 和 IBOutlet区别
18  
19  1. IBAction,从返回值角度上看,作用相当于void,只是返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线
20  2. IBOutlet 用来和界面的元素建立关系,用来修改,获得界面控件的属性,故对应的是@property,而 IBAction 对应的是方法。只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线。 UIViewController是负责程序的控制,相当于管家的角色,而UIView 是负责界面的展示,联系 MVC 模式。严格来讲,下图箭头所指的应该是一个UIViewController对象,里面白色的界面仅仅是UIViewController内部的UIView属性
21  
22  */
23 @property (nonatomic,weak) IBOutlet UITextField *num1;  // Text 类型是UITextFiled 
24 @property (nonatomic,weak) IBOutlet UITextField *num2;
25 
26 @property (nonatomic, weak) IBOutlet UILabel *result; // UILable 是对应UI 的类型
27 
28 
29 
30 @end

B:监听计算 button 的动作:

 1 #pragma 监听按钮点击
 2 
 3 - (void)btnClick{
 4     // 1.获得文本输入框的文字
 5     NSString *text1 = self.num1.text;  // 使用点语法调用 get 方法获取对应的值 text
 6     NSString *text2 = self.num2.text;
 7     // 2. 将string 字符串转换成整数
 8     int i1 = [text1 intValue];
 9     int i2 = [text2 intValue];
10     
11     self.result.text = [NSString stringWithFormat:@"%d",i1 +i2];// 把整数转换成字符串
12     
13     }
14 
15 @end

http://www.th7.cn/Program/IOS/201502/398336.shtml

转载于:https://www.cnblogs.com/stephenmc/p/5348681.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

8--UI 初步认识 简易计算器 的相关文章

  • linux 积累

    linux文件夹打包命令 tar 解包 tar xvf FileName tar 打包 tar cvf FileName tar DirName 注 tar是打包 不是压缩 gz 解压1 gunzip FileName gz 解压2 gzi
  • 重用的undo日志 (3)—mysql进阶(六十六)

    前面说了undo日志的文件格式 第一页和后面的页是不同的 填入undo日志之前 会先把undo page header属性填满 还有undo segment header undo log header List base node存在un
  • Open Camera异常分析(一)

    负责的项目中遇到一些三方和其他的场景使用camera导致问题 并且没有及时释放camera device致使手机camera应用一直无法使用的严重问题 针对这类问题进行了一系列的分析与追踪 最后算是定位到了问题且提供了一些解决方案 但整个追
  • 编程题——连续最大和

    编程题 连续最大和 题目描述 一个数组有 N 个元素 求连续子数组的最大和 例如 1 2 1 和最大的连续子数组为 2 1 其和为 3 输入描述 输入为两行 第一行一个整数n 1 lt n lt 100000 表示一共有n个元素 第二行为n
  • 拼多多anti-token 字段加解密学习分析

    注 本篇文章仅学习交流该APP的加密方法 提示我们的安全技术 不可以对该app和公司造成违法行为 否则后果自负 如有侵权行为 烦请贵司与我第一时间联系 下架文章 感谢 app 版本 6 26 我们抓包得到这里有个关键字段 anti toke
  • 一维卷积神经网络直接读取mat文件并进行数据增强和归一化

    众多师弟师妹在使用一维卷积神经网络对凯斯西储 哥伦比亚等大学开源的轴承故障数据集进行故障诊断时 不知道该怎么把Matlab文件中的数据直接导进伸进网络进行训练 我之前也不会 我一直用matlab打开数据然后黏贴到EXCEL再进行数据增强和归
  • 大华摄像头:视频抓图接口

    大华摄像头 视频抓图接口 CLIENT CapturePictureEx 保存图片 对显示图像进行瞬间抓图 CLIENT SetSnapRevCallBack 设置抓图回调函数 CLIENT SnapPictureEx 抓图请求扩展接口
  • 古典密码汇总。

    一 密码类型汇总 23 维吉尼亚密码 Vigen re Cipher Vigen re Cipher 由于频率分析法可以有效的破解单表替换密码 法国密码学家维吉尼亚于1586年提出一种多表替换密码 即维吉尼亚密码 也称维热纳尔密码 维吉尼亚
  • AQS底层原理

    1 AQS能干嘛 是什么 能干嘛 加锁就会有阻塞 有阻塞就需要排队 实现排队必然需要有某种形式的队列来进行管理 是什么 废话 抽象的队列同步器 翻译一下 AQS是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石 通过内置的
  • 一文打通Sleuth+Zipkin 服务链路追踪

    1 为什么用 微服务架构是一个分布式架构 它按业务划分服务单元 一个分布式系统往往有很多个服务单元 由于服务单元数量众多 业务的复杂性 如果出现了错误和异常 很难去定位 主要体现在 一个请求可能需要调用很多个服务 而内部服务的调用复杂性 决
  • 使用brew services管理服务

    原文 https www jianshu com p 6c3b26490861 简介 官网 https github com Homebrew homebrew services macOS使用launchctl命令加载开机自动运行的服务
  • 基于 LoadRunner 实现企业级服务器端性能测试的实践

    后端性能测试工具首先通过虚拟用户脚本生成器生成基于协议的虚拟用户脚本 然后根据性能测试场景设计的要求 通过压力控制器控制协调各个压力产生器以并发的方式执行虚拟用户脚本 并且在测试执行过程中 通过系统监控器收集各种性能指标以及系统资源占用率
  • Linux部署jar包,隐藏命令行参数

    Linux部署jar包 隐藏命令行参数 一 背景需求 二 查阅资料 三 实现隐藏库 3 1 测试test c 3 2 设置隐藏库 3 3 验证 四 应用jar启动命令 五 直接应用结果 最新项目安全检测 发现配置文件中数据库密码 redis
  • Linux提权—脏牛漏洞(CVE-2016-5195)复现

    脏牛漏洞 脏牛漏洞 又叫Dirty COW 存在Linux内核中已经有长达9年的时间 在2007年发布的Linux内核版本中就已经存在此漏洞 Linux kernel团队在2016年10月18日已经对此进行了修复 漏洞范围 影响版本 该漏洞
  • Spring Data JPA与JDBC的区别和基本用法

    JPA 与 JDBC 的区别和基本用法 原文地址 JPA 概念 JPA Java Persistence API 用于对象持久化的 API 是 Java EE 5 0 平台标准的 ORM 规范 使得应用程序以统一的方式访问持久层 与 JDB
  • Scrapy爬虫,数据存入MongoDB

    开始 首次登陆MongoDB 由于没有设置用户管理权限 会给出警告 WARNING Access control is not enabled for the database 警告 warning 和错误 error 不一样 你完全可以忽
  • ip正则表达式

    var Sip rule value callback gt if 2 5 0 5 0 4 d 0 1 d 1 2 2 5 0 5 0 4 d 0 1 d 1 2 3 test value false callback new Error
  • JavaWeb之xml学习笔记二(dom4j简单使用)

    使用dom4j来解析xml文件 首先需要下载dom4j 去官网下载最新版本 下载之后 我们先要在ide里创建一个xml用来提取数据 以下是用来解析的示例H xml文件
  • 若依ruoyi——手把手教你制作自己的管理系统【二、修改样式】

    阿里图标一 图片白嫖一 3 专栏略长 爆肝万字 细节狂魔 请准备好一键三连 运行成功后 idea后台正常先挂着 我习惯用VScode操作 当然如果有两台机子 一个挂后台一个改前端就更好了 只需修改vue config js配置文件即可 eg
  • Beats — Filebeat 基础操作

    ElasticStack Beats 定义 一 ElasticStack 的组成 二 Beats 组件 FileBeat 日志采集 二 Filebeat 工作原理 三 启动命令 四 部署和运行 1 output console 通过终端获取

随机推荐

  • Centos8启动卡在[OK] Started GNOME Display Manager.Dispatcher Service...rvice.emon.

    一 Centos8界面版本启动卡住问题如图 1 界面虽然界面卡住 但是服务可以访问 还可以使用xshell连接 或者其他远程软件连接使用 说明Centos8服务器已经启动了 但是界面卡住了 2 百度找了很多办法 说ctrl alt F1 F
  • 【1.前端Nginx负载均衡反向代理和双机热备配置】

    Nginx负载均衡 反向代理 双机热备 方案想法 两台xmail放置企业内网环境 为确保数据信息安全 外网用户无法直接访问 因此 给外网用户一个单独的入口做反向代理 其实一台Nginx服务器即可 但如果xmail服务比较多 唯一的出口不幸挂
  • Word调整标题格式

    将光标放在该级标题之后 右键 编号 定义新编号形式 编号格式改为想要的形式 以第1章为例 中间的数字形式是编号样式决定 需要将光标放在数字所在位置 选择相应形式 最后确定 就可以看到标题形式变为设置的那样
  • Spring Singleton Bean 三级缓存

    spring getBean的三级缓存有点绕 但理清楚了 就会发现也挺简单的 一 循环依赖 循环依赖有多种情况 以下整理的三种 1 构造方法互相依赖 例如ServiceA的构造方法中依赖了ServiceB Service的构造方法中依赖了S
  • 由于回车符引起的shell错误

    今天弟弟写shell时出现一个错误 源代码如下 zip r 1 2 执行时出现错误 我也写了相同的语句 发现是可以执行的 把两个文件对比一看 差别在于 出错shell 正确shell 在linux下的回车是 n 在win下面的回车是 r n
  • IIS上部署Django+vue-element-admin-master

    在Windows2012上通过IIS部署自己的web Django Vue element admin master 文章目录 前言 1 安装IIS和CGI 2 部署Django项目 3 部署vue element admin master
  • 二极管 MOS管 3.23学习笔记

    二级管 外加正向电压导通 外加反向电压截至 受电压极性控制的开关 缺点 1 由于二极管的导通压降 造成输出的电压与输入的高低电压有偏移 向下一级门电 路传递时 有高低电压的偏差 2 带负载能力差 MOS管 栅极 源极 漏极 衬底 当门极与衬
  • Mybatis-Plus insertBatch执行缓慢原因查询

    背景 最近在SpringCloud项目中 使用Mybatis Plus执行一个88万条左右的数据插入MySQL数据库的操作时 发现执行时长竟然长达2个小时 按理讲 MP框架执行如下批处理操作时 XXService insertBatch X
  • 【PyCharm警告】选择性忽略 PEP8 警告

    提示 Class names should use CamelCase convention Inspection info This inspection checks the PEP8naming conventions 为什么 从命名
  • spark SQL基础教程

    1 sparkSQL入门 sparksql专门用于处理结构化的数据 而RDD还可以处理非结构化的数据 sparksql的优点之一是sparkfsql使用统一的api读取不同的数据 第二个优点是可以在语言中使用其他语言 例如python 另外
  • 21电赛D题配置部分

    MJPG Streamer推流 安装MJPG Streamer 编辑 etc apt sources list 文件 删除原文件所有内容 用以下内容取代 deb http mirrors tuna tsinghua edu cn raspb
  • jest搭建vue项目单元测试-现有老项目

    说到项目会分为新建的醒目和老项目两种 jest搭建vue项目单元测试 vue cli创建新项目 我们接下来说现有老项目 现有的vue老项目或者没使用vue cli创建项目搭建jset单元测试 1 安装 npm i vue test util
  • 重启Vcenter命令

    重启Vcenter命令 通过ssh登录Vcenter 输入root 输入shell 输入service control stop all 输入service control start all 停止 启动或重新启动 VMware vCent
  • linux xenserver教程,XenServer常用命令

    监控检查类 xentop 查看XenServer与VM的资源使用情况 xsconsole 进入XenServer管理面板 查看网卡 IP 系统版本 系统时间 硬件信息等 xe task list 查看XenServer临时任务进程 serv
  • 【C语言】验证哥德巴赫猜想

    文章目录 问题来源 题目要求 如何判断素数 主函数 完整代码 效果演示 写代码中的误解 总结 问题来源 这是学校的一个作业 原题如下 题目先给出了哥德巴赫猜想的背景知识 我还真不知道 2000以内的正偶数都能分解成两个质数 素数 之和 题目
  • 毕业设计-基于 PID 控制算法仿真算法研究- Matlab

    目录 前言 课题背景和意义 实现技术思路 一 基本原理 二 无超调 PID 控制器的设计 三 无超调 PID 设计的验证 代码 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一
  • 安装anaconda及修改conda config 的channels/default_channels

    先说一下安装anaconda的方法 很简单 就是去官网下载然后在本地安装 bash Anaconda3 4 4 0 Linux x86 64 sh 这个过程中要耐心 会有提问 需要输入yes来回应 并且需要按很多的回车 总之 看见让输入ye
  • 转:机器学习的理解

    转李航博士的一篇关于机器学习理解的文章 算算时间 从开始到现在 做机器学习算法也将近八个月了 虽然还没有达到融会贯通的地步 但至少在熟悉了算法的流程后 我在算法的选择和创造能力上有了不小的提升 实话说 机器学习很难 非常难 要做到完全了解算
  • Ridis持久化

    Redis持久化 RDB Redis DataBase Redis会单独创建 fork 一个子进程来进行持久化 会先将数据写入到一个临时文件中 待持久化都结束了 再用这个临时文件替换上次持久化好的文件 整个过程中 主进程是不进行io操作的
  • 8--UI 初步认识 简易计算器

    UI是App的根基 一个App应该是先有UI界面 然后在UI的基础上增加实用功能 2 UI相对简单易学 UI普遍是学习过程中最简单的一块 能快速拥有成就感和学习兴趣 3 UI至关重要 开发中的绝大部分时间都在处理UI 谨记一条IOS软件开发