
Swift
文章平均质量分 69
仰望星空01
不负韶华,砥砺前行!
展开
-
NSCache、NSDictionary、NSArray对比
NSCache、NSDictionary、NSArray1.NSArray 作为一个存储对象的有序集合,可能使用最多的集合类性能特征:在数组的开头和结尾插入删除通常是直接操作O(1),而随机的插入和删除通常是O(n)2.NSDictionary中的键是被拷贝的并且需要是恒定的,如果在一个键在被用于字典中放入一个值后被改变,那么这个值可能就会变得无法获取了。一个有趣的细节,在NSDictionary中键是被拷贝的,而在使用一个tool-free桥接的CFDictionary时却是被retain。Cor原创 2021-02-26 21:14:11 · 1000 阅读 · 0 评论 -
Swift之使用自定义IconFont
IconFontIconFont 也叫字体图标,顾名思义,就是字体做的图标。受到近些年扁平化设计 的影响,越来越多的图标都开始使用 icon font。IconFont技术起源于Web领域的Web Font技术。随着时间的推移,网页设计越来越漂亮。但是电脑预装的字体远远无法满足设计者的要求,于是Web Font技术诞生了。一个英文字库并不大,通过网络下载字体,完成网页的显示。有了Web Font技术,大大提升了设计师的发挥空间。优点自由的变化大小,且不会模糊比图片小,加载快方便更改颜色大小,图原创 2020-06-18 23:01:42 · 1422 阅读 · 0 评论 -
力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。
力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2...原创 2020-04-17 09:44:34 · 3196 阅读 · 0 评论 -
iOS Cocoapods创建自己的Cocoapods公共库组件
iOS Cocoapods创建自己的Cocoapods公共库组件注册CocoaPods账户信息注册CocoaPods账户信息打开终端,创建一个开源pod库,需要注册CocoaPodspod trunk register 邮箱地址 '用户名' --verbose...原创 2019-07-24 11:27:12 · 514 阅读 · 0 评论 -
Swift 代理传值
需求:上个页面的值,会传到当前页面。传值页面:class NextViewController: UIViewController { weak var delegate: NextVCDelegate? @IBOutlet weak var textField: UITextField! override func viewWillDisapp...原创 2019-07-17 11:31:01 · 1490 阅读 · 0 评论 -
Swift Extention
YYExtentions链接地址:https://github.com/YaoChengZhen/YYExtentions.gitInstallationYYExtentions is available through CocoaPods. To installit, simply add the following line to your Podfile:source 'https...原创 2019-07-24 08:55:30 · 257 阅读 · 0 评论 -
pod 组件验证常见错误
执行pod lib lint --allow-warnings 报错:- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a `ios` simulator (valid values: com.apple.coresimulator.simruntime.ios-12-2, com.apple.coresi...原创 2019-07-22 17:14:33 · 2430 阅读 · 0 评论 -
面试算法之:如何判断链表是否有环
如何判断链表是否有环方法一:双重循序遍历代码如下方法二:把之前的遍历的结果实现存储起来方法三:如果环形跑道,速度不同时,两个人一定会相遇。代码方法一:双重循序遍历从头节点开始,一次遍历单链表的,每一个人节点。没遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和之前所有的节点一次比较,如果发现和之前的某一个节点相同 ,则说明该节点被遍历两次,说明环。缺点:时间复杂度O(n^2)太高,空...原创 2019-08-13 16:39:25 · 483 阅读 · 3 评论 -
面试算法之求最大公约数
题目:求两个数的最大公约数,要尽量优化算法的性能方法一:暴力枚举是绝对不可取的,效率不高如果我们传入的整数是10000和10001,那我们需要循环10000 / 2 - 1 = 4999for(int i = small / 2; i > 1; i--) { if(small % i == 0 && big % i == 0) { return i; }}...原创 2019-08-13 20:35:16 · 249 阅读 · 0 评论 -
iOS底层原理之KVO本质
面试中常会问道:iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?)如何手动触发KVO什么是KVO首先需要了解KVO基本使用,KVO的全称 Key-Value Observing,俗称“键值观察”,我们可以用于监听某个对象属性值的改变。如下代码://// ViewController.m// KVO原理探索// Created by just so so o...原创 2019-08-26 08:18:37 · 592 阅读 · 0 评论 -
iOS 13适配汇总
随着iPhone 11的发布,iOS 13适配也提上了日程,接下来就开发中升级iOS13的手机可能出现的问题Xcode: 11.0iOS : 13.0UIViewController 模态弹出界面viewController.present(presentVC, animated: true, completion: nil)在调用模态弹出视图,会发现弹出的界面没有全屏。如图通过多次...原创 2019-09-15 14:53:26 · 10064 阅读 · 0 评论 -
iOS 13 SceneDelegate适配
Xcode 11新建工程在Xcode 11 创建的工程,运行设备选择 iOS 13.0 以下的设备,运行应用时会出现黑屏现象。原因:Xcode 11 默认是会创建通过 UIScene 管理多个 UIWindow 的应用,工程中除了 AppDelegate 外会多一个 SceneDelegateAppDelegate和SceneDelegate这是iPadOS带来的新的多窗口支持的结果,并...原创 2019-09-24 10:36:00 · 41885 阅读 · 1 评论 -
Swift 优雅的协议扩展
Swift 优雅协议扩展仿view.snp.xxx的调用形式如何实现核心代码完整代码如下:仿view.snp.xxx的调用形式先看调用效果:“123456”.yy_Str.MD5ForLower32Bate()"123456".yy_Str.MD5ForLower32Bate()//类似:view.snp.xxx为什么要这么做呢?好处在哪呢?降低耦合度:传统的写法,直接在类别中添加...原创 2019-07-18 16:14:16 · 1070 阅读 · 2 评论 -
Swift之高阶函数map、flatMap、filter、reduce
Swift之高阶函数map、flatMap、filter、reducemapflatMap与map不同之处filerreduce有关Swift.map高阶函数的应用 Swift相比于Objective-C又一个重要的优点,它对函数式编程提供了很好的支持,Swift提供了map、filter、reduce这三个高阶函数作为对容器的支持。map解释:可以对数组中的每一个元素做一次处理var ...原创 2019-07-15 17:43:20 · 698 阅读 · 0 评论 -
Swift 优雅的网络请求Moya
Moya使用demoMoya面向协议Moya的模块组成代码demoMoyaMoya是一个网络抽象层,它在底层将Alamofire进行封装,对外提供更简洁的接口供开发者调用。在Objective-C中,大部分开发者会使用AFNetwork进行网络请求,当业务复杂一些时,会对AFNetwork进行二次封装,编写一个适用于自己项目的网络抽象层。在Objective-C中,有著名的YTKNetwork...原创 2019-04-18 18:11:10 · 10825 阅读 · 1 评论 -
iOS 一行代码搞定button 图文左右
iOS UIButton图片文字排版顺序iOS-UIButton的文本与图片的布局重写button按钮*setTitleEdgeInsets*和*setImageEdgeInsets*方法利用UIView属性中的:semanticContentAttributeSDAutoLayout给button重新布局iOS-UIButton的文本与图片的布局UIButton内部文本和图片的布局是我们日常...原创 2019-04-19 11:11:50 · 1909 阅读 · 0 评论 -
iOS设置圆角的四种方法
iOS设置圆角的四种方法1. 设置CALayer的cornerRadius2. 设置CALayer的mask3. 通过Core Graphics重新绘制带圆角的视图4. 通过混合图层5. 总结1. 设置CALayer的cornerRadiuscornerRadius属性影响layer显示的background颜色和前景框border,对layer的contents不起作用。故一个imgView...原创 2019-04-19 11:25:55 · 4704 阅读 · 0 评论 -
Swift5.0 Alamofire网络请求的二次封装
Alamofire结合SwiftyJSON、ObjectMapper二次封装网络请求Alamofire直接上代码吧单例方法:请求类:YRequestManager扩展请求方法:post、get、upload扩展私有方法,封装请求请求数据返回响应方法AFSErrorInfo结构体 和 YAPITargetType协议protocolbaseModel代码实例1说明AlamofireAFNet...原创 2019-04-29 12:35:47 · 12265 阅读 · 4 评论 -
经典排序(一)
经典排序1、冒泡排序(Bubble Sort)1、冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1.1 算法描述比较相邻的元素。如果第一个比第二个大...原创 2019-06-20 16:40:40 · 322 阅读 · 0 评论 -
UISearchBar中搜索框中右边叉号按钮事件
UISearchBarUISearchBar继承于UIView,我们可以像创建View那样创建searchBar,他是iOS系统提供给我们的搜索框;//改变左边搜索图标坐标位置。后面的占位符苹果已经做好约束总是跟随在搜索原创 2019-06-21 09:25:05 · 2489 阅读 · 0 评论 -
设置tableHeaderView中使用xib格式页面布局错乱问题
tableHeaderView第一:xib文件作为headerView的时候:frame一定要在layoutsubviews方法中,把填写的frame,重新赋值不然会造成页面显示一屏幕的bug;第二:iOS 11.0以上机型,必须要在初始化,再用View 包裹:在设置bgView.addsubView( xibView)tableview.tableHeaderView = bgView...原创 2019-06-21 09:50:34 · 696 阅读 · 1 评论 -
iOS 自动打包App Store脚本
iOS 自动打包App Store脚本自动化打包方案:xcodebuild打包详解完整的shell脚本,里面还包含上传蒲公英的内容操作说明自动化打包方案:xcodebuild打包详解使用xcodebuild自动化打包给就是用命令行来控制Xcode进行编译打包xcodebuild打包有3种,一种是adHoc测试打包ipa;一个是上传AppStore打包;一个企业级别打包。具体区别请看下面的步...原创 2019-06-21 10:25:13 · 547 阅读 · 0 评论 -
UITableview优化之圆角设置
一、最简单的设置圆角 //头像圆角 icon.layer.cornerRadius = 20 icon.layer.masksToBounds = true这种设置方法会造成离屏渲染什么是离屏渲染GPU渲染机制CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显...原创 2019-06-26 16:10:21 · 2180 阅读 · 0 评论 -
UITableview优化之Cell高度计算
cell高度一般分两种一、定高tableView.rowHeight = 80相当于方法指定了所有cell高度都是80对于定高cell,直接采用上面方式给定高度,不需要实现代理中 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 以节省不必要的计算和开销。二、动态高度代理方法实现后,...原创 2019-06-26 16:37:21 · 633 阅读 · 0 评论 -
Xcode No account for team "". Add a new account in the Accounts preference pane or verify that your
问题描述当我们在Git上下载下来一些第三方库的时候,将签名改成自己的开发者账号仍然出现类似:Showing All Messages No account for team "8PC4X7QUY9". Add a new account in the Accounts preference pane or verify that your accounts have valid creden...转载 2019-06-24 17:15:03 · 15624 阅读 · 0 评论 -
Swift SnapKit布局注意事项
SnapKit布局注意事项Snapkit简单布局Demo常见问题一:updateConstraints常见问题二:snapkit更改布局动画效果常见问题三:两个自适应宽度控件,导致右边的自适应问题SnapkitSnapKit,一个经典的Swift版的第三方库,专门用于项目的自动布局。它的作者仍然是写Objective-C的第三方库Masonry的大牛 - @Robert Payne,开门见山。...原创 2019-07-01 13:52:52 · 3684 阅读 · 0 评论 -
iOS 调用系统分享
调用系统分享框架Social.framework利用系统分享内容如下自定义UIActivity框架Social.framework导入框架Social.framework,集成系统分享时候我们会用到UIActivityViewController这个类的。利用系统分享内容如下fileprivate func systemShareAlert() { let url = U...原创 2019-07-04 12:37:20 · 2380 阅读 · 0 评论 -
Swift5.0 Alamofire download的一般使用
Alamofire download指定自己想要的文件名:就要重写:DownloadRequest.DownloadFileDestination block具体代码如下: let destination: DownloadRequest.DownloadFileDestination = {[weak self] (url, response) in let ...原创 2019-07-05 10:02:47 · 6623 阅读 · 3 评论 -
iOS 文件预览(PDF、Excel、World等)之QuickLook框架
iOS 文件预览QuickLookQuickLook一、简介QuickLook库可以让我们的App在iPhone/iPad中直接预览各个文件了。官方的开发文档中说明其支持的文件类型有:iWork documentsMicrosoft Office documents (Office ‘97 and newer)Rich Text Format (RTF) documentsPDF ...原创 2019-07-01 14:18:01 · 5930 阅读 · 0 评论 -
iOS 面向协议的Swift
面向协议的Swift面向协议应用场景:为什么说Swift是面向协议编程的语言?面向协议简单来说,协议就是一张代码实现蓝图,我们可以在这张蓝图上勾勒出可能需要实现的方法、属性和其他满足特定任务的功能模块。而类、结构或枚举都可以通过这张蓝图(协议)来提供对这些需求的实际实现。而任何满足协议要求的类型都被认为符合该协议,都需要实现该协议规定必须实现的方法和属性。Swift 标准库核心是面向协议,连...原创 2019-04-18 17:47:10 · 408 阅读 · 0 评论