Ios学习基础笔记——实现App基本界面

Posted 化作孤岛的瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ios学习基础笔记——实现App基本界面相关的知识,希望对你有一定的参考价值。

前言:

博主本人目前是做了四年android开发,之前学习过一段时间的Flutter开发,最近因为业务需求,开始做ios的功能,于是花了几天时间熟悉了Oc的语法规则,并整理了一下IOS开发的基础入门框架。其实Android和IOS的共通之处特别特别多,感觉从Android开发转IOS开发是比较容易入手的,很多东西都能一一对应上。

本文也是开始整理一些IOS学习中的基础快速入门笔记,会有两到三章的篇幅,之后会开发一个Github的实战项目,在工作之余陆续推进!

 

一.大体架构

  • UITabBarController 底部tab控件

可以添加多个 UIViewController, UIViewController可以设置item

通过delegate设计模式判断是否自动切换:

1.设置tarBar.delegate = self

2.实现shouldSelectViewController 或者didSelectViewController

 

  • UINavigationController 做页面间的切换(Android 没有这个概念,通过Intent控制)

通过UINavigationController 设置要跳转的UIViewController,可以通过栈结构管理页面间的跳转

左边默认backBarButtonItem    右边rightBarButtonIten

左边leftBarButtonItem

在目标界面里,通过类似viewController.navigationItem.rightBarButtonIten进行设置

 

  • UIWindow 顶层容器 (类似Android的Window)

通常屏幕上只存在一个UIWindow

1.创建UIWindow

2.设置rootViewController

3.makeKeyAndVisible

 

  • 市面上的应用 常用的整体结构:


二.常用组件

  • 列表:UITableView (类似于Android中的ListView)

包括头布局tableHeaderView和底布局tableFooterView

中间是UITableVIewCell

通过delegate模式,实现UITableViewDataSourcce(类似Android里的Adapter)

1.设置UITableView的dataSource为self

2.实现numberOfRowsInSection (个数)和 cellForRowAtIndexPath (具体的样子)两个方法

3.在cellForRowAtIndexPath中创建UITableViewCell (默认提供四种样式)

4.在cellForRowAtIndexPath中可以尝试通过dequeueReusableCellWithIdentifier 通过id尝试从回收池找到cell

标记和找到制定的Cell通过Section和Row ,类似于章和回,包装在NSIndexPath中

UITableViewDelegate 类似于Android里的滚动,点击,高度设置等监听器

1.设置delegate为self

2.实现需要的方法

 

  • 列表:UICollectionView (可以实现多种布局的列表视图)

也是基于datasource和delegate来驱动的

Row变成了item,因为一行可以展示多个,所以row无法准确表达位置了

处理数据相关逻辑:UICollectionViewDataSource

处理滚动和展示逻辑:UICollectionViewDelegate

数据类UICollectionViewCell :必须先注册类型,以用于重用

collectionview.registerClass…forCellWithReuseldentifier

复用:dequeueReusableCellWithReuseldentifier…forIndexPath

UICollectionViewLayout 默认布局

里面包含每一个cell的UICollectionViewLayoutAttributes(负责位置,布局,展示,透明度等)

系统提供了一个默认的最常用的流式布局:UICollectionViewFlowLayout

UICollectionViewFlowLayout:

1.minimunIteritemSpacing:水平方向间距

2.minimumLineSpacing:垂直方向间距

3.itemSize:item大小尺寸

基本使用UICollectionView的流程

1.创建UICollectionViewLayout,定义使用的布局

2.创建UICollectionView,设置delegate和datasource,注册cell类

 

  • UIScrollView (类似Android里的ScrollVIew)

contentOffset : 滚动区域左上角与视图左上角的距离

contentSize:视图内部,内容可以滚动的区域

frame:视图在屏幕中的大小

监听器:UIScrollViewDelegate

 

  • UILable 展示文字(类似Android TextView)

 

  • UIImageView 展示图片(类似Android ImageView)

使用 UIImage 管理图片数据的对象(类似于Android的Drawable)

设置图片填充方式:UIViewCOntentMode(类似Android的scaleType)

 

  • UIButton 按钮(Android的Button)

 

  • Target-Action (类似Android 事件监听)

点击事件

addTarget:设置响应事件的对象

Action:设置响应的事件

forControlEvents:设置响应事件的类型(比如Android里的EventUp,EventDown)

继承自UIControl(集成了所有子类可能用到的事件)

UIView->UIControl->UIButto,UISwtich,UISider

 

  • UIGestureRecognizer 识别触摸,集合手势封装 (类似Android的GestureDetector)

UIGestureRecognizerDelegate

可以设置是否响应手势,是否支持多手势和多手势的冲突以及处理。

 

  • UIAlertView (类似Android AlertDialog)

 

  • WKWebView和UIWebView, 推荐用前者

需要引入#import <WebKit/WbKit.h>

基本加载:

loadRequest

loadhtmlString

配置configration

提供了两个delegate:

1.WKNavigationDelegate

是否加载请求,完成加载,加载失败,crash回调

2.WKUIDelegate

处理alert,confirm,prompt等互动内容

观察者模式:KVO NSKeyValueObserving

可以给webview addObserver,监听目标属性额度变化


三.动画相关

IOS中有两种动画(由Core Animation实现)

UIView动画,UIKit组件自带动画

UIView动画:处理基本的Frame,Alpha,Transform

animateWithDuration ..delay..usingSpringWithDamping..initialSpringVelocity..

options..animations..completion.

其中initialSpringVelocity和options分别为阻尼系数和回弹系数,类似android的插值器

动画都是由CALayer实现的

  • CALayer:

所有的ui组件都有

可以实现圆角阴影,边框之类的

.layer.cornerRadius ..

 

  • CoreAnimation动画执行类    (类似于Android中的ValueAnimation)

CAKeyframeAnimation:关键路径动画

CAAnimationGroup:可以组合多个简单动画

CATransition:转场动画

CAEmitterLayer:粒子发射器

其他:

Lottie

Facebook/pop

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于Ios学习基础笔记——实现App基本界面的主要内容,如果未能解决你的问题,请参考以下文章

Ios学习基础笔记——实现App功能扩展

Ios学习基础笔记——实现App功能扩展

python基础学习笔记——Python基础教程(第2版 修订版)第12章(图形用户界面)

从零开始的iOS开发:10 | 如何构建一个APP

iOS学习——输入验证码界面封装

Java基础学习笔记十四 常用API之基本类型包装类