摘要:
扫码采用类库:AVFoundation 1、相关权限 1)、需要在info.plist中添加以下权限:Privacy - Camera Usage Description(使用摄像机的权限说明) 2)、权限申请与判断: 查询权限:AVCaptureDevice.authorizationStatus 阅读全文
摘要:
swift中的进制转换,以及玩转二进制 在日常开发中我们很少用到进制转换,或操作二进制的情况。但是如果你处理一些底层的代码,你会经常与二进制打交道,所以接下来我们先来了解一下二进制。 二进制(binary),是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用 阅读全文
摘要:
Generamba Generamba:是为使用 Xcode 而设计的代码生成器。它主要设计用于生成 VIPER 模块,但很容易自定义模板以生成任何其他模板(在 Objective-C 和 Swift 中)。 1、安装 安装前需要检查ruby版本,需要 Ruby 2.2 或更高版本。 检查ruby版 阅读全文
摘要:
随着swift ABI的稳定,越来越多的开发者开始使用swift语言开发项目,但是由于大部分工具库也还是使用OC写的,因此我们不得不需要在项目中采用swift与oc混编。 在开发app项目时,swift与oc混编其实很容易,xcode会自动为我们建立一个桥接文件,这样我们就很容易的在swift中调用 阅读全文
摘要:
扩展UI组件时常用到的一些发布者与订阅者如下: 发布者: ControlEvent(专门用于描述 UI 控件所产生的事件) 订阅者(观察者): Binder(专门用于绑定UI状态的,如:当某个状态改变时,更新UI状态) 既是发布者又是订阅者: ControlProperty(专门用于描述 UI 控件 阅读全文
摘要:
动态成员查找是 Swift 中的一项功能特性,可提高与 Python 或 Javascript 等动态语言的互操作性。它允许动态成员查找调用看起来像访问类型属性的常规调用: let people = People() let name = people.name // 像访问属性一样 name是从字 阅读全文
摘要:
在Swift中使用KVO,有如下两种方法: 原OC提供的: open func addObserver(_ observer: NSObject, forKeyPath keyPath: String, options: NSKeyValueObservingOptions = [], contex 阅读全文
摘要:
IDFA的背景 为了保护用户隐私,早在2012年就不再允许其生态中的玩家获取用户的唯一标识符,但是商家在移动端打广告的时候又希望能监控到每一次广告投放的效果,因此,苹果想出了折中的办法,就是提供另外一套和硬件无关的标识符,用于给商家监测广告效果,同时用户可以在设置里改变这串字符,导致商家没有办法长期 阅读全文
摘要:
什么是镂空效果,下图就是一个镂空效果的文字: 从图可知,文字是透明的,可以看到下面的图片内容,而UILabel其它部分是白色背景。 使用Quartz 2D绘制镂空效果,大体思路如下: 实现一个UILabel的子类(这个不是必须的,这样做的目的是为了利用UILabel自身的文字绘制功能方便的绘制出文字 阅读全文
摘要:
Quartz 提供了两种不透明的数据类型来创建渐变CGShading 和 CGGradient,你可以使用其中任何一个来创建轴向或径向渐变。 轴向渐变:沿着一个轴方向线性渐变 径向渐变:一个点为原型,指定半径的范围内辐射渐变 我们用两个图来理解一下这两个概念: 1、轴向渐变(轴:沿着左上角 到 右下 阅读全文
摘要:
CGPattern是在图形上下文中重复绘制的一系列绘制操作。你可以像使用颜色一样使用图案。当使用CGPattern进行绘制时,Quartz将页面划分为一组图案单元格,每个单元格的大小为CGPattern初始化时bounds的大小,并使用您提供的回调来绘制每个单元格。下图为一个简单的CGPattern 阅读全文
摘要:
CoreText是Apple系统的文字渲染引擎。 我们先看一个字符的字形图,了解一下一个字形包含的部分: 它的坐标系为窗口的左下角为视图的原点(跟Mac系统一样的坐标系),而iOS系统的坐标系为窗口的左上角为视图的原点。因此我们在使用CoreText进行绘制文字时,需要对其坐标系进行转换,转换方法如 阅读全文
摘要:
冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、计数排序、桶排序、基数排序 阅读全文
摘要:
线程锁 是为了解决多个线程之间共享同一资源时,对资源的占用控制,防止多个线程之间同时修改同一资源信息,导致不可预知的问题。 锁的实现方式大致可以分为以下两种: 阻塞 忙等 阻塞:如果锁对象被其他线程所持有,那么请求访问的线程就会被加入到等待队列中,因而被阻塞。这就意味着被阻塞的线程放弃了时间片,调度 阅读全文
摘要:
MARK: 在OC中的用法: #pragma mark -说明文字(可以不加-) 在swift中的用法:// MARK: - 说明文字(可以不加-) TODO、FIXME(不区分OC、swift) // TODO: 说明文字 // FIXME: 说明文字 需要在xcode中添加run script( 阅读全文