Swift
文章平均质量分 84
Style_月月
越努力,越幸运
展开
-
swift 音频被中断处理
1、监听音频打断事件NotificationCenter.default.addObserver(self, selector: #selector(audioStart(_:)), name: NSNotification.Name.AVAudioSessionInterruption, object: nil)2、在通知方法中处理音频中断事件AVAudioSessionInterruptionType有两种类型:began 和 endedpublic enum Interruptio.原创 2020-09-28 16:52:13 · 839 阅读 · 0 评论 -
Swift:Lottie实现tabBar切换动画
主要是利用lottie实现tabbar切换时的动画效果,如下图所示1、首先需要创建 继承自UITabBarController 的视图控制器 HomeTabBarController2、pod lottie框架3、添加 HomeTabBarController的子控制器视图extension HomeTabBarController{ fileprivate func setupChildVC(){ let first = UIViewControll原创 2020-09-03 16:35:27 · 1466 阅读 · 0 评论 -
Swift :SnapKit 更新约束 & label宽度自适应
创建约束phoneNumLabel.snp.makeConstraints { (maker) in maker.left.equalToSuperview().offset(16) maker.top.equalToSuperview().offset(16) maker.height.equalTo(18) maker.width.equalTo(180)}更新约束更新约束有两种方式在原有约束的基础上更新:更新topphoneNumLabel.snp.m原创 2020-08-10 15:06:35 · 4184 阅读 · 0 评论 -
iOS中常用的圆角处理方式总结
最简单的方法,是让UI提供带圆角的图片以下几种是通过代码设置的,均可以避免触发离屏渲染,提高性能通过在ImageView的layer设置圆角 let btn0 = UIButton(type: .custom) btn0.frame = CGRect(x: 100, y: 60, width: 100, height: 100) //设置圆角 btn0.layer.cornerRadius = 50 self.view.原创 2020-07-08 16:09:17 · 1046 阅读 · 0 评论 -
四、深入剖析【离屏渲染】原理
深入剖析【离屏渲染】原理离屏渲染与正常渲染屏幕上最终显示的数据有两种加载流程正常渲染加载流程离屏渲染加载流程从图上看,他们之间的区别就是离屏渲染比正常渲染多了一个离屏缓冲区,这个缓冲区的作用是什么呢?下面来仔细说说首先,说说正常渲染流程正常渲染流程APP中的数据经过CPU计算和GPU渲染后,将结果存放在帧缓冲区,利用视频控制器从帧缓冲区中取出,并显示到屏幕上。在GPU的渲染流程中,显示到屏幕上的图像是遵循大画家算法按照由远及近的顺序,依次将结果存储到帧缓冲区视屏控制器从帧缓冲区中原创 2020-07-07 16:57:02 · 1594 阅读 · 0 评论 -
Swift数据结构:二叉树
一、二叉树的基本概念1、二叉树:在二叉树中,每个节点最多有两个节点,一般被称为左子节点和右子节点,并且二叉树的子数有左右之分,其次序不能任意颠倒2、二叉树节点的实现public class GeneralTreeNode{ public var val : String public var left : GeneralTreeNode? public var...原创 2019-05-24 14:39:31 · 1005 阅读 · 0 评论 -
swift数据结构:栈和队列
一、栈1、栈是后进先出的结构,可以这么理解:有好几个盘子要叠在一起,最后放上去的盘子,在下次使用的时候会最先抽出去2、在ios开发中,如果要在App中提阿甲撤销操作 如删除图片,恢复删除的图片,首先的数据结构是栈3、栈的基本操作包括:push、pop、isEmpty、peek、size4、栈的实现://定义栈的通用协议protocol Stack { //持有元素的...原创 2019-05-13 11:56:04 · 377 阅读 · 0 评论 -
swift数据结构:链表
swift实现链表及链表的相关特性,最后附上两道算法题一、链表的基本操作实现1、定义链表节点class ListNode{ var val : Int! var next : ListNode! init(_ val : Int) { self.val = val self.next = nil }}2、...原创 2019-05-11 12:55:41 · 1378 阅读 · 0 评论 -
Swift:LLDB调试
Swift:LLDB调试1、expression修改简单的逻辑当我们需要调测一小块变量,并且需要修改部分参数为指定值,一般的操作都是在代码中手动修改。那么如何在不用重新运行项目的情况下修改,这就需要使用 expresion 了1.1 expresion有两种使用方式在LLDB中输入:每次都要输入expression 参数 = 指定值po 参数在断点中配置:只需要输入一次1)右键选中 Edit Breakpoint2)点击 anction3)在下图标识的1中输入需要制定的参原创 2020-06-16 14:08:33 · 434 阅读 · 0 评论 -
swift/ios:error(报错)汇总(持续更新)
1、 error “_OBJC_CLASS_$_XXXXXXX”, referenced from: objc-class-ref in解决方案:根据_OBJC_CLASS_$_的XXXXXXX找到对应的类库,添加即可2、崩溃:Trapped uncaught exception 'NSInternalInconsistencyException', reason: 'Client e...原创 2020-05-08 16:30:32 · 1282 阅读 · 0 评论 -
swift/iOS:项目warning(警告)处理汇总(持续补充)
1、warning:Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int解决方案:target->BuildSetting -> Other Warning Flags 中添加-Wno-shorten-64-to-322、cocopods去除三方库的警告解决方...原创 2020-05-08 16:23:04 · 903 阅读 · 0 评论 -
swift:Notification Service Extension 扩展动态修改推送通知
众所周知,苹果的apns推送,在我们不点击通知时,app是不会执行任何代码的,且apns推送的保活时间是30s左右,如果我们想对推送内容进行修改,可以通过Notification Service Extension进行动态修改一、Notification Service Extension1、点击 file->new->target2、选择 iOS->Notifi...原创 2020-05-08 11:00:48 · 2926 阅读 · 0 评论 -
SWIFT-----block:闭包
1、什么是闭包闭包是功能性自包含模块,可以在代码中被传递和使用,主要用于callback异步回调,本质是一个函数,一个可执行的代码块。闭包的书写格式:{ (parameters) -> return type in statements }2、简单的闭包即无参数、无返回值 { },无参数时可以省略inlet b = { print("闭包")}...原创 2019-07-31 15:52:51 · 796 阅读 · 0 评论 -
SWIFT-----protocol:可选接口和扩展接口
在OC中,protocol存在 @optional关键字,被这个关键字修饰的方法不是必须实现的,我们可以通过接口定义一系列的方法,然后选取自己所需去实现其中的几个方法。而原生的swift中的 protocol里并没有可选项,所有定义的方法都是必须实现的,如果想要和OC一样的效果,需要在protocol 定义之前加上 @objc,使用没有@符号的 optional 关键字定义可选方法@ob...原创 2019-07-31 12:00:47 · 762 阅读 · 0 评论 -
swift 将图片资源打包成Bundle
有时在项目中直接把图片放到Assets.xcassets中,或者直接拖拽到项目中,会使得项目的包过大。解决办法:需要将图片资源打包成bundle打包过程如下:1、创建bundle选择target下的+号-->选择macOS-->选择Framework & Library 下的Bundle,创建bundle2、配置bundle前往bui...原创 2019-07-18 18:34:00 · 2259 阅读 · 0 评论 -
组件化:CocoaPods搭建私有仓库
一、cocoapods公共仓库1、查看cocoapods 本地目录使用 finder-->前往文件夹,输入:~/.cocoapods/repos跳转至本地cocoapods目录cocoapods本地目录如下所示:master:是cocoapods对应的公共git仓库Myspecs:是自己创建的私有仓库地址(后面会提到如何创建)二、搭建自己的p...原创 2019-07-09 17:38:08 · 457 阅读 · 0 评论 -
swift单元测试(八)总结
针对前几篇文章介绍的测试框架,有以下几点总结:1、单元测试:XCTest框架之单元测试UnitTest、三方测试框架Quick+Nimble的使用在单元测试中,除开苹果官方自带的测试框架,swift推荐使用Quick+Nimble,OC推荐使用 kiwi。2、UI测试:XCTest之UI测试UITest、三方UI测试框架KIF的使用在UI测试中,苹果官方通过录制代码来完成测试...原创 2019-06-24 14:58:31 · 1407 阅读 · 0 评论 -
swift单元测试(七)三方模拟框架OCMock的使用
这篇文章介绍的是如何在swift项目中使用OCMock框架1、Mock介绍 OCMock是一个用于为iOS或Mac OS X项目配置Mock测试的开源项目。 其实现思想就是根据要mock的对象的class来创建一个对应的对象,并且设置好该对象的属性和调用预定方法后的动作(例如返回一个值,调用代码块,发送消息等等),然后将其记录到一个数组中,接下来开发者主动调用该...原创 2019-06-21 16:47:35 · 1663 阅读 · 0 评论 -
Swift开发之头部图片轮播器
今天来记录一下用原生的UIScroller,代码写头部视图的图片轮播器,意义在于自己总结,欢迎大家点评。。首先我说说我的思路:先创建一个UIView的对象,然后再创建UIScrollView和UIPageControl的对象分别加入到view的子控件中,实现图片轮播主要用到了3个对象,分别是:scrollview、pageControl和image。 scrollView:主要设置图片原创 2016-07-07 16:15:25 · 1511 阅读 · 0 评论 -
【转载】Swift 算法实战之路:栈和队列
原文地址:http://www.cocoachina.com/swift/20160622/16786.html这期的内容有点剑走偏锋,我们来讨论一下栈和队列。Swift语言中没有内设的栈和队列,很多扩展库中使用Generic Type来实现栈或是队列。笔者觉得最实用的实现方法是使用数组,本期主要内容有:栈和队列的基本Swift实现,以及在iOS开发中应用的实例转载 2016-06-22 11:42:18 · 585 阅读 · 0 评论 -
如何在Swift开发中使用CocoaPods导入的第三方库
今天在用swift写项目时,需要用CocoaPods引入SDWebImage这个三方库,于是开始在Vim命令中创建pod file,在创建之前需要cd到当前项目的目录中,Podfile创建步骤如下:1、创建Podfile:touch Podfile2、编辑Podfile文件:vim Podfile 按 i 进入编辑状态,编辑完成后按Esc退出编辑状态,然后输入:wq 返回,原创 2016-07-08 09:27:17 · 10685 阅读 · 0 评论 -
Swift : 在VoIP应用中接入iOS10中的CallKit框架--即接听电话使用系统原生界面
由于目前开发的应用是一款VoIP应用,需要接入iOS10新框架CallKit,由于这个框架在官网也只有各种方法,没有具体的说明,不过提供了一个swift版本的Demo作为参考,官网Demo链接地址:官网Demo链接 使用CallKit接听来电的步骤为:1、配置CallKit框架的模型类、管理类和代理方法类,这个可以参考官网Demo里面的,需要的文件见下图红线标注的部分原创 2016-12-21 16:03:26 · 4430 阅读 · 0 评论 -
swift 判断当前时间是否在一周7天的某几天固定时间段内
项目需求:根据用户选择的某时间段及7天中的某几天重复执行某种操作步骤:1、获取当前时间,并获取当前时间对应的星期var today = Date() let todayDay = TimeAndDateOperation.getweekDayWithDate(today)//根据日期获取是星期几 class func getweekDayWithDate(_ date ...原创 2018-04-28 16:20:22 · 2279 阅读 · 0 评论 -
swift3 缩放悬浮窗的实现
具体代码实现:swift 实现可缩放悬浮窗原创 2018-07-11 14:08:48 · 3096 阅读 · 0 评论 -
swift 实现导航栏随tableView滑动颜色渐变、头部图片往上移动效果和往下放大效果
需求:实现导航栏随tableView滑动颜色渐变、头部图片往上移动效果和往下放大效果最终效果如下:准备工作:先用storyboard创建一个视图控制器(UIViewController),加入视图(TableView),并添加约束1、用imageView作头部背景图片,并保存初始frame //图片 self.bgView = UIImageView.init...原创 2019-01-03 15:18:35 · 2247 阅读 · 0 评论 -
Swift Callkit扩展--来电标记
需求:需要实现项目中根据号码从服务器查询返回的标记写入calllkit放骚扰标记系统库中,来电时显示该标记最终的效果如图所示:一、准备工作1、新建一个swift 项目2、创建callkit扩展:选择file->new->target,选择Call Directory Extension,输入扩展的名称,创建好后选择Activate 3、想实现项目...原创 2019-01-09 15:58:09 · 1372 阅读 · 2 评论 -
swift 柯里化Currying
1、什么是柯里化?柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数切返回结果的新函数的技术用数学理解就是:一个函数求xy,当传入y=2时,返回的就是2x2、简单示例例如:实现一个函数,输入的是任一整数,输出要返回输入的整数+2一般的写法是func addTwo(_ a : Int)->Int{ ...原创 2019-05-23 16:16:39 · 281 阅读 · 0 评论 -
swift单元测试(一)基本概念
1、为什么要进行单元测试?答:单元测试是为了避免你的app变成充满bug的软件,让我们在开发过程中能更好的发现缺陷,提高代码质量,也能保证在代码重构时及时发现改动带来的问题。2、单元测试应该测什么?答:1)核心功能:模型类和方法,以及它们和控制器的交互 2)最常用的UI操作 3)边际条件 4)bug修复3、单元测试需...原创 2019-06-14 10:44:31 · 1934 阅读 · 0 评论 -
swift单元测试(二)XCTest框架之单元测试UnitTest
1、XCTest框架概述 XCTest是苹果官方的测试框架,是基于OCUnit的传统测试框架,测试编写起来非常简单。XCTest的优缺点: 1)优点:与Xcode深度集成,有专门的Test导航栏, 2)缺点:因为受限于官方测试API,因此功能不是很丰富。在书写性和可读性上都不太好。在测试用例太多的时候,由于各个测试方法是割裂的...原创 2019-06-14 17:15:32 · 4314 阅读 · 2 评论 -
swift单元测试(三)XCTest之UI测试UITest
继上篇文章介绍了XCTest中的单元测试,这片土地主要介绍下苹果官方测试框架XCTest中的的UITest。1、UITest简介 UI Tests是一个自动测试UI与交互的Testing组件。UI testing允许你找到UI元素并与之交互,还能检查属性和状态.可以和单元测试一起执行. UITest使用的OC/Swift语言的自动化测试。 可以通过编写代码、...原创 2019-06-20 15:24:37 · 2791 阅读 · 0 评论 -
swift单元测试(四)三方测试框架Quick+Nimble的使用
1、苹果官方测试框架XCTest的优缺点优点:与Xcode深度集成,有专门的Test导航栏。缺点:1)因为受限于官方测试API,因此功能不是很丰富。2)在书写性和可读性上都不太好。在测试用例太多的时候,由于各个测试方法是割裂的,想在某个很长的测试文件中找到特定的某个测试并搞明白这个测试是在做什么并不是很容易的事情。3)所有的测试都是由断言完成的,而很多时候断言的意义并不是...原创 2019-06-20 17:55:23 · 4469 阅读 · 0 评论 -
swift单元测试(六)三方网络请求框架OHHTTPStubs 的使用
1、OHHTTPStubs 的介绍 在你的服务器没有准备妥当或者在你需要模拟数据进行本地开发时,OHHTTPStubs是一个很好的可以加速测试和开发的工具。OHHTTPStubs可使用伪造的网络数据和模拟的缓慢网络来测试你的应用程序,从而检测你的应用程序在不佳的网络环境中的行为,并使用伪造的网络数据编写单元测试OHHTTPStubsResponse可以指定为文件,图片...原创 2019-06-21 14:48:48 · 1384 阅读 · 0 评论 -
swift单元测试(五)三方UI测试框架KIF的使用
1、KIF介绍 KIF的全称是Keep it functional。它是一个建立在XCTest的UI测试框架,通过accessibility来定位具体的控件,再利用私有的API来操作UI。由于是建立在XCTest上的,所以你可以完美的借助XCode的测试相关工具(包括命令行脚本 使用KIF框架强制要求你的代码支持accessibility。如果你之前没接触过...原创 2019-06-21 15:37:58 · 1280 阅读 · 0 评论 -
swift中字符串的处理
今天总结下swift中对于字符串的操作,记录下工作中常用的。。。1、字符串的声明 关于字符串的声明可以标注类型,也可以不标注,如// 1、字符串声明 var emptyStr : String = " "//声明一个空字符串 var str : String = "Hello World"//定义变量类型为String va原创 2016-06-21 15:54:36 · 4531 阅读 · 0 评论