美文网首页
iOS 知识点回顾 查缺补漏笔记

iOS 知识点回顾 查缺补漏笔记

作者: 爱吃麦子的鱼 | 来源:发表于2018-10-22 15:54 被阅读48次

1、contentFlie: 凡是带file的需要填写全路径。
2、App的安装时是需要打包成一个bundle文件,所以获取资源的时候是通过[NSBundle mainbundle]

  • 获取程序包资源文件路径方式:
    pathforResource
相关参考:https://yq.aliyun.com/articles/26977

3、自定义控件
思路:先搭建UI界面、显示数据、特殊处理、优化

  • 纯代码自定义控件
    在initWithFrame中进行初始化、添加控件
    在layoutSubViews中设置控件大小
  • 通过xib自定义控件
    在initWithCoder(xib初始化时调用)或awakeFromeNib(xib加载完毕时调用。推荐使用)进行初始化。在initWithCoder方法中,控件为null。
    在layoutSubViews中设置控件大小
注意:layoutSubViews只有当控件大小改变时才会执行该方法,改变控件的x或y时不会执行该方法。

4、设置类方法,需要创建改类对象实例时,使用self完成创建。以便继承该类的子类调用此类方法时创建的对象实例为子类本身。
5、返回任意对象类型是最好使用instancetype,会自动检测返回的对象类型。
6、动画
帧动画
渐变动画
核心动画
转场动画

  • alpha属性可以做动画
  • hidden属性不可以做动画

7、设置控件半透明:将背景颜色改成半透明
8、调整按钮image和title的位置

  • 第一种方法
    在UIButton子类中重写
    imageRectForContentRect:
    titleRectForContentRect:
  • 第二种方法
    在UIButton子类中重写
    layoutSubViews

9、按钮adjustsImageWhenDisabled属性
disable状态下要不要调整按钮显示的图片
10、按钮的内边距
contentEdgeInsets属性

  • title和image的左右内边距分别设置为10可以拉开间隙同时实现居中效果

11、image图片

1)图片的拉伸

  • 第一种方法
    resizableImageWithCapInsets:(UIEdgeInsets)设置需要保护起来不参与拉伸的上左下右的范围,只拉伸图片中间的内容
    resizingMode:分平铺和拉伸效果(默认平铺)


    屏幕快照 2018-08-02 18.19.21.png
  • 第二种方法(已废弃)


    image 图片拉伸第二种方法.png
  • 第三种方法通过xib拉伸图片
    这种方法有时候会出现bug,保护区域不够,自己可以调整一下。一般的为拉伸背景图片


    通过xib拉伸图片.png

    2)加载无缓存的图片


    加载无缓存的图片.png
    3)image的contentMode属性
    image的contentModel属性.png

12、内存管理
读取代码从右往左

  • 对象放在堆中
  • 局部变量是在栈中

13、分类
给系统自带的类扩充方法
14、weak的使用
UI控件最好用weak
15、KVC键值编码

  • 给对象简单属性赋值
  • 给对象复杂属性赋值
KVC的使用.png
  • 快速的字典转模型


    KVC 字典转模型.png
  • 可以直接修改私有的成员变量,可以给私有的成员变量赋值(最核心的价值)
  • 获取value对应的key数组


    KVC 获取key数组.png

16、KVO键值观察
作用: 可以监听某一个对象属性值的改变


KVO 监听属性值.png

17、UIScrollView

  • UIScrollView无法滚动
    1)没有设置contentSize或者设置的contentSize的值小于或者等于scrollView的尺寸
    2)scrollEnabled的值为NO
    3)userInteractionEnabled(决定是否能跟用户交互)为NO
  • 没有设置contentSize,scrollView不能滚动,想让scrollView出现下拉效果,将alwaysBounceHorizontal 、alwaysBounceVertical设置成YES,实现弹簧效果
  • scrollView的内边距可以增加额外的滚动区域(更改内边距时会调用didscroll的代理方法)
  • scrollView的delegate
    1)即将开始拖拽、即将停止拖拽、已经停止拖拽
    2)正在滚动
    3)减速完毕(停止滚动)
  • delegate 为什么使用weak 防止循环引用
  • 图片缩放 捏合手势(按住option+shift键可以移动鼠标)


    UIScrollView的图片缩放.png
  • 轮播图设置pageControl显示图片


    pageControl显示图片.png

18、适配

  • 系统适配
  • 屏幕适配


    设备屏幕.png

    1)Autoresizing(跟AutoLayout 、SizeClass不兼容)

  • 使用时需要去掉AutoLayout
  • 外面四根设置相对于父控件的位置,里面俩根设置宽度和高度跟随父控件进行拉伸。


    Autoresing.png

    转换成代码


    Autoresing 代码适配.png
    2)AutoLayout
  • 约束:确定一个控件的(x,y, w,h)
  • 参照:所添加的约束是相对于谁来说的


    AotuLayout在xib中的使用.png
    父控件跟随子控件伸缩.png
    通过autolayout实现UILabel包裹内.png
    约束的优先级.png

    3)SizeClass

19、给约束添加动画


约束添加动画.png

20、Masonry
equalTo 和 mas_equalTo,mas_equalTo是对基本数据类型进行的包装。
21、UITableView

  • 设置索引文字


    tableView 设置索引文字.png
  • 自定义UITableViewCell
  • 计算文字高度
    • 纯代码
      1)计算一行文字高度


      计算一行文字高度.png

      2)计算多行文字高度


      计算多行文字高度.png
    • xib或者storyboard


      cell 自动调节高度(1).png
      cell 自动调节高度(2).png
  • 局部刷新,动画刷新(使用条件:数组长度没有变)


    tableView 局部刷新.png

22、启动图片


启动图片.png

23、pch文件


pch文件.png

24、UIApplication 代理


UIApplication 代理.png

25、应用程序的启动原理


应用程序启动原理 main函数.png
app启动过程.png
应用程序启动原理.png

26、通过storyboard加载控制器


通过storyboard加载控制器.png
从storyboard加载控制器.png

27、通过xib加载控制器的View
1)绑定类
2)连线


通过xib加载View.png

28、LoadView


控制器的View创建.png

29、UIWindow


UIWindow.png

30、自定义选择键盘

  • 自定义PickerView
  • 将自定义的PickerView赋值给UITextField的inputView

31、UINavigationController

  • push控制器是压栈
  • pop控制器是出栈

32、控制器View的生命周期


控制器View的生命周期.png

33、监听UITextField文本框内容的改变


监听UITextField文本框内容的改变.png

34、通过storyboard跳转 自动型跳转 手动型跳转

1)手动跳转
从VC1控制器push到VC2控制器,然后添加identifier


通过storyboard 手动跳转.png

2)自动跳转
通过需要支持响应的控件,直接跳转到下一个控制器


Storyboard 自动型跳转 手动型跳转.png
  • 通过storyboard跳转传递数据(自动跳转和手动跳转都会调用)


    从storyboard加载控制器传递属性.png
  • prepareForSegue的实现原理


    prepareForSegue的实现原理.png

35、iOS 应用数据的存储方式

  • XML属性列表(plist文件)
    在plist当中是没有办法存放自定义对象的


    plist存储.png
  • Preference (偏好设置)


    偏好设置存储.png
  • NSKeyedArchiver归档


    归档.png
    解档.png

    注意:需要遵守NSCoding协议


    归解档.png

initWithCoder方法(调用[super initWithCoder]方法,需父类遵守了NSCoding协议)


initWithCoder.png
  • SQLite3
  • Core Data

36、应用沙盒结构分析


应用沙盒结构.png

37、modal控制器


modal控制器.png

38、UIView的transform属性


UIView transform属性.png

39、iOS中的事件


iOS中事件.png
iOS 事件方法.png
按钮跟随手指移动.png

40、事件的产生和传递

  • 事件是由队列管理的
    1)事件的传递(由父控件传递到子控件,如果父控件不能接收事件,子控件就不能接收事件)
    按照层次结构寻找最合适的View


    UIView不接收事件.png
    不能接收事件原因.png
    hitTest 和pointInside.png
    hitTest底层实现.png

    2)事件的响应和传递的完整过程


    事件的传递和响应.png
事件的传递.png

42、手势


捏合手势.png
拖动手势(平移).png
清空形变.png

43、手势的使用

  • 侧滑菜单


    扩展工具类.png

44、Quartz2D
Quartz2D 二维绘图引擎(画图表 第三方库 charts)
最主要的价值是自定义UI控件


图形上下文.png
Quartz2D简介.png
UIBezierPath.png
画圆.png
关闭路径.png
重绘.png
图形上下文的矩阵操作.png
图形上下文状态.png
CADisPlayLink.png
CADisPlayLink定时器.png

45、NavigationBar


load 和 initialize的区别.png
设置NavigationBar.png

46、字符串 copy


字符串 copy.png

47、通知和代理的选择
跨级之间用通知
上下级之间用代理

48、Block
Block保存一段代码


block.png

49、多线程


线程和进程.png
主线程.png
多线程概念.png
多线程原理.png
多线程实现方案.png
线程的状态.png
NSThread.png
线程之间的通信.png
互斥锁.png
GCD.png
GCD 一次性代码.png
GCD 延时执行.png

50、原子属性和非原子属性


原子属性和非原子属性.png

51、UIView+frame


UIView+frame.png
UIView+frame 重写set和get方法.png

52、设置子控制器


设置子控制器.png

53、设置是否响应手势事件


设置是否响应手势事件.png

54、调整按钮图片和文字


按钮.png
更改按钮图片和文字位置.png

55、调整cell分割线


更改Cell的分割线 第一种方法.png
更改Cell分割线 第二种方法.png

56、设置App新特性界面


设置App新特性.png

57、自定义UISegmentedControl


UISegmentedControl.png

58、设置UICollectionFlowLayout


设置UICollectionFlowLayout.png

59、造成循环引用的原因


造成循环引用的原因.png

相关文章

  • iOS 知识点回顾 查缺补漏笔记

    1、contentFlie: 凡是带file的需要填写全路径。2、App的安装时是需要打包成一个bundle文件,...

  • PMP 2018-12-03

    最后1周了 要回顾知识点 查缺补漏了 闭关修炼 希望大家都能考过

  • 《编高iOS 52方法》第一章——熟悉Objective-C

    前言 工作很多年了,如今再来熟悉回顾一下 iOS 一些基础的知识点,查缺补漏,也可以规范、优化自己的代码,重拾一些...

  • 查缺补漏

    计算机本科研究生相关课程参加开源项目spring源码

  • 查缺补漏

    查缺补漏是学习中最通俗的方法,知道自己哪方面知识点薄弱,就针对性的去学习,假以时日的去练习,就能攻克难点,薄弱知识...

  • 查缺补漏

    一.表格常用样式 vertical-align: 垂直方向的对齐方式middle top bottom bor...

  • 查缺补漏

  • 考试还有两个多月

    距离考试还有两个多月,没有太多的话,给自己加油。查缺补漏的背,巩固练习知识点。

  • Promise 查缺补漏

    promise 中 resolve 参数为一个 promise 时 p1是一个 Promise,3 秒之后变为re...

  • JavaScript查缺补漏

    语法 每个语句以;结束,语句块用{...}。但是,JavaScript并不强制要求在每个语句的结尾加; 第一种是=...

网友评论

      本文标题:iOS 知识点回顾 查缺补漏笔记

      本文链接:https://www.haomeiwen.com/subject/mjejvftx.html