【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验
时间:2022-07-22
本文章向大家介绍【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在学iOS开发,本系列会针对iOS从前到后的开发进行全面讲解,小到开发工具使用,大到应用市场上线。
需求:
1.显示一个橘黄色矩形
2.矩形上面一个按钮可以点击,并有响应事件
3.界面中心显示一张图片
系统版本:
Mac OS 版本:10.15.5
Xcode版本:11.5
一、创建demo项目
1.1 选择创建一个Xcode Project
1.2 选择Single View App
二、代码实现
2.1 程序入口说明
Application/AppDelegate.swift文件中的@UIApplication注解,表示这个Class类是程序的入口
2.2 代码结构说明
所有方法放到一个{}中,并有缩进。
和Java编码格式非常相似。
2.3 功能实现
2.3.1 创建一个视图,添加一个黄色矩形
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// 1.创建一个视图
let v = UIView(frame: CGRect(x:0, y:0, width: 100, height: 100))
// 2.设置背景颜色
v.backgroundColor = UIColor.yellow
// 3.添加到当前视图
view.addSubview(v)
}
}
效果如下所示:一个黄色矩形在左上角
2.3.2 添加一个按钮,并添加按钮点击事件的监听方法
// 2.创建一个按钮
let btn = UIButton(type: .contactAdd)
// 2.1 添加到当前视图
v.addSubview(btn)
// 2.2 添加点击事件
btn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
// 2.3 btnClick事件方法输出日志
效果如下所示,一个按钮在左上角,点击按钮将会输出日志
2.3.3 添加一个图片
// 3.1 添加一个图片
let iv = UIImageView(image: #imageLiteral(resourceName: "2.jpeg"))
// 3.2 添加到视图
iv.center = view.center
图片的资源路径可以通过代码添加,也可以通过工具添加
效果如下所示,图片会显示在屏幕中间。
三、上述示例swift与object-c的语法对比
3.1 创建视图类比
- Swift: UIView(XXX:)
- OC: [[UIView alloc] initWithXXX:]
类名() == alloc / init 等价
3.2 类方法类比
Swift: UIColor.yellow
OC: [UIColor yellow]
3.3 访问当前对象的属性类比
- 建议:都不使用
self.
。当编译器提示的时候,再添加,会对语境有更好的机会; - 原因:闭包(类似于 OC block)需要使用self。
3.4 不需要;
除非多行代码语句写在同一行中。
3.5 枚举类型 type对比
Swift:`type: .contactAdd`
OC: UIButtonType.ContactAdd
3.6 监听方法对比
Swift: #selector,如果带参数,不需要使用`:`
OC: @selector
3.7 调试对比
- Swift: print(xxx) 效率高,log中不包含时间,用#function来打印当前执行的方法
- OC: NSLog,用__FUNCTION__ 来打印当前执行的方法
四、注释的妙用
当我们想标注某段代码是需要refine的,我们可以添加注释标签:TODO
。
如下图所示,我在注释中添加了MARK
、TODO
、FIXME
标签前缀,这些特殊标记的锚点菜单将会显示在导航栏上,点击菜单即可跳转到对应注释的地方,非常方便。
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(二)Log4j讲解与整合
- 京东JData算法大赛-高潜用户购买意向预测(github源码)
- 巧用linux命令做图片下载器(r4笔记第7天)
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(五)结合MockMvc进行服务端的单元测试
- 关于order by中的数据排序(r4笔记第6天)
- 深度学习CTPN+CRNN模型实现图片内文字的定位与识别(OCR)
- Markdown语法讲解及MWeb使用教程
- 通过Linu命令实现屏幕录制和回放(r4笔记第5天)
- 用keras对国产剧评论文本的情感进行预测
- python常用可视化技巧
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM
- 通过java程序抽取日志中的sql语句(r4笔记第4天)
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(七)JDBC url的连接参数
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 自定义组件使用v-model
- 金蝶K3 WISE版本过服务期后打补丁方法-完善版本
- 图像处理笔记(6)---- OpenCV waitKey函数
- SpringBoot整合Quartz作为调度中心完整实用例子
- SpringBoot整合SpringSecurity简单实现登入登出从零搭建
- SpringBoot整合SpringBatch实用简例
- 解决JPA懒加载典型的N+1问题-注解@NamedEntityGraph
- 基于Shiro,JWT实现微信小程序登录完整例子
- Spring Cloud Eureka 总结
- Spring Cloud Feign 总结
- 掘金15W沸点简单分析(一)
- SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建
- 基于AOP和ThreadLocal实现日志记录
- 搭建prometheus+grafana监控SpringBoot应用入门
- 掘金15W沸点简单分析(二)