IOS

iOS仿AirPods弹出动画

2019-12-12
本文实例为大家分享了iOS仿AirPods弹出动画的具体代码,供大家参考,具体内容如下 效果图 预览图 思路 在当前ViewController下Present另外一个AnimationViewController,在弹出的AnimationViewController中播放动画,弹出的时候原来的ViewController上有一个全屏覆盖的maskView,在弹出时,有一个渐变动画(页面渐黑),在AnimationViewController声明一个代理,在代理方法中实现收起的动画效果(dis

iOS实现秒杀活动倒计时

2019-12-09
IOS关于大型网站抢购.距活动结束,剩余时间倒计时的实现代码,代码比较简单,大家根据需求适当的添加修改删除代码 1.定义4个 Label 来接收倒计时: @property (weak, nonatomic) IBOutlet UILabel *dayLabel; @property (weak, nonatomic) IBOutlet UILabel *hourLabel; @property (weak, nonatomic) IBOutlet UILabel *minuteLabel; @

iOS 通用链接(Universal Link)配置详解

2019-11-26
iOS 通用链接(Universal Link)配置 什么是通用链接? 通用链接是iOS9推出的一项新功能,如果你的应用(app)支持通用链接(Universal Link)之后,iOS用户能够在点击网页的链接的时候无缝的重定向到已经安装的app,不需要额外的任何操作.如果没有安装对应的app,那么点击链接会使用Safari打开网页.在iOS9以前,对于各种浏览器,Safari中唤醒app的需求,我们通常是只能使用scheme的方式. 为什么要突然改用通用链接的配置方式? 我们的项目中唤起第三方

iOS13 适配和Xcode11.0踩坑小结

2019-11-26
iOS13中presentViewController的问题 更新了Xcode11.0 beta之后,在iOS13中运行代码发现presentViewController和之前弹出的样式不一样. 会出现这种情况是主要是因为我们之前对UIViewController里面的一个属性,即modalPresentationStyle(该属性是控制器在模态视图时将要使用的样式)没有设置需要的类型.在iOS13中modalPresentationStyle的默认改为UIModalPresentationAu

Mac OSX 打开原生自带读写NTFS功能(图文)

2019-11-24
最近买了一个移动硬盘,发现在mac osx上可读不可写,以为移动硬盘有问题,但是却可在我的windows本上完美读写,于是百度了一下.发现其实最早在OSX 10.5的时候,OSX其实原生就支持直接写入NTFS的盘的,后来由于微软的限制,mac关闭了这个功能,所以接下来我们要通过命令行打开这个ntfs读写功能. 一.查看磁盘的Volume Name 打开 terminal 执行diskutil list 查看volume name 可以看到我的volume name是My Passport 二.更

iOS实现模拟定位功能的示例代码

2019-11-20
前言 App中越来越多的功能依赖用户实际的位置,例如基于用户位置提供推荐数据.基于定位判断某些功能是否可用,但是在开发调试中XCode却没有提供自定义的模拟定位的功能,所以本文主要的目的是现实一个可以在开发调试过程中随时模拟定位的功能. 思路 我们在iOS的app开发中通常采用的是CLLocationManager来获取用户当前的位置,当然也可以采用MKMapView的showUserLocation来获取用户的位置,所以我们分别针对这两种情况分析. CLLocationManager 采用CL

IOS 图片存放3种方式的实现

2019-10-26
Image.xcassets 创建 .xcassets,以 Image Set 形式管理图片,添加图片后会生成对应的 content.json 文件 加入 @2x 和 @3x 等倍图后,打包后以 Assets.car 的形式存在, 使用 [UIImage imageNamed:@"xxx"] 方式读取图片,可以使用图片缓存 -- 相当于创建了一个 key-value的字典,key 为图片名,value 为图片对象.创建图片对象后,该对象被加入到 NSCache 中(解码后的 Image

详解iOS平台调用后台接口的正确姿势

2019-10-23
前言 做iOS开发,除非你做的是单机应用,否则一定避免不了接口调用,也就是所谓的API调用. 而对于这方面,每个公司定义接口的格式不尽相同,从而导致我们的代码没法达到通用. 甚至你接私活的话,更会遇到五花八门的接口格式.那么有没有一种通用的方式来处理这些不通用的格式呢? 我尝试从变化的接口格式中找到不变的东西,把这些不变的东西进行可配置,从而形成以不变应万变的接口调用方式. 这些不变的东西,包括如下几种: 错误码 错误消息 业务数据 而对于错误码又可以分如下几类: 成功 失败 token失效 基

iOS ScrollView嵌套tableView联动滚动的思路与最佳实践

2019-10-19
前言 随着业务的发展,页面的复杂度越来越高,嵌套滚动视图的方式也越来越受设计师们的青睐,在各大电商App十分常见.如下Demo图: 但是这样的交互官方并不推荐,而且对开发来说确是不那么友好,需要处理滚动手势的冲突,页面的多层级嵌套都给开发带来了一定程度的麻烦.接下里我聊聊我们的实现思路. 思路和过程 对应这种页面结构应该毫无疑问是最底层是一个纵向滚动的scrollView,它的页面上面放一个固定高度的header,紧接着下面一个支持横向滚动切换的容器scrollView,容器上面才是各个页面具体

iOS常见算法以及应用知识点总结

2019-10-18
算法比较 关键词 二分 递归 分治 回溯 冒泡排序 思想:两次循环,外层进行循环次数的控制,内层循环,进行数据之间的比较,大的数据上浮(下沉) #pragma mark - Objective-C //冒泡排序 - (void)bubbleSort:(id)array{ if (!([array isKindOfClass:[NSArray class]] || [array isKindOfClass:[NSMutableArray class]])) { NSLog(@"传入的参数不是数组类

iOS多Target环境配置的完整步骤

2019-10-14
在项目的开发中, 经常会有测试.正式环境, 下面就来配置一下这两个环境: 一:拷贝源Target (1): 拷贝源Target (2): 更改Target的名称 拷贝结束之后, 将拷贝的Target的名称改为"TestDemo_dis" (3): 更改Scheme的名称 二: 更改General 和 Signing & Capabilities 中的信息 (1)更改测试环境下的General 和 Signing & Capabilities 中的信息 (2)更改正式环境

iOS查找私有API的方法示例

2019-10-13
喜接新项目往往预示的会出一堆问题.解决问题的同时往往也就是学到更多东西的时候,这也许就是学习到新东西最直接最快速的方法吧! 小编经过努力,新项目终于过测试了,可是被苹果大大给拒了,好苦啊,最近的审核真的是没有谁了.这回被拒是因为项目中存在私有api,下图为被拒信息. 这就坑了啊,这么大一个项目,我如何定位呢? 如果是代码里面运用到私有api,那就简单了,直接 command+Shift+F ,就可以定位了! prefs:root= 就是原来代码里面的,小编找到后果断删除了! 最麻烦的就是在第三方

iOS13原生端适配攻略(推荐)

2019-10-11
随着iOS 13的发布,公司的项目也势必要着手适配了.现汇总一下iOS 13的各种坑 1. KVC访问私有属性 这次iOS 13系统升级,影响范围最广的应属KVC访问修改私有属性了,直接禁止开发者获取或直接设置私有属性.而KVC的初衷是允许开发者通过Key名直接访问修改对象的属性值,为其中最典型的 UITextField 的 _placeholderLabel.UISearchBar 的 _searchField. 造成影响:在iOS 13下App闪退 错误代码: // placeholderL

iOS13即将到来,iOS推送DeviceToken适配方案详解

2019-09-27
随着苹果iOS13系统即将发布,个推提前推出DeviceToken适配方案,以确保新版本的兼容与APP推送服务的正常使用.iOS13的一个重要变化是"[deviceToken description]" 会受不同运行环境及系统的影响而发生变化,如果未及时做好适配工作,会导致SDK绑定到错误的DeviceToken,从而影响APN推送.请各位开发者根据当前运行环境做出相应的更新与优化,以保障用户在iOS13系统上有更好的使用体验. 在Xcode11.iOS13运行时"[devi

详解iOS中跨页面状态同步方案比较

2019-09-23
由于团队希望项目能够去 CoreData 化,而以往状态同步都是依赖于 CoreData 的NSFetchedResultsController.因此去 CoreData 则必须寻找一种替代方案来进行状态同步. NotificationCenter 状态同步实际是一对多的场景,也就是一个事件可以被多个观察者监听到.而苹果的系统框架自带的 NotificationCenter 正是用来适配这种场景,并且其也是被系统框架本身及我们开发者大面积使用的.用法如下: 定义通知名字,以及需要额外传递信息的

iOS 13适配汇总(推荐)

2019-09-18
随着iPhone 11的发布,iOS 13适配也提上了日程,接下来就开发中升级iOS13的手机可能出现的问题 Xcode: 11.0 iOS : 13.0 UIViewController 模态弹出界面 viewController.present(presentVC, animated: true, completion: nil) 在调用模态弹出视图,会发现弹出的界面没有全屏.如图 通过多次的尝试,发现在低版本里面不会发生这种情况(iOS12及以下),于是我查阅了最新的开发文档,发现了端倪,

解决iOS13 无法获取WiFi名称(SSID)问题

2019-09-11
升级到iOS13以后,发现之前获取WiFi名称的接口失效了,返回的都是固定值"WLAN".这里可能是因为苹果对用户隐私保护问题,因为通过wifi信息可以定位到用户地理位置.所以iOS13以后如果想要继续获取WiFi名称,需要在调用接口前判断用户是否同意app使用地理位置信息. 我这里只在第一次使用时提示: NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; CGFloat version = [phone

iOS导航栏对控制器view的影响详解

2019-09-11
前言 当我们设置导航栏的某些属性的时候会导致控制器View的布局不是从window的 (0,0)点开始布局,会从导航栏底部开始布局,而此时在 viewDidLoad 中 获取到View的frame 确实从(0,0)开始的,只有在 viewDidAppear中才能获取到 view 最终的实际 frame 一些属性 在了解 UINavigationBar之前,有必要了解 UINavigationBar 的一些属性 ///默认 default 半透明 black 黑色 open var barStyl

浅谈iOS开发如何适配暗黑模式(Dark Mode)

2019-09-09
暗黑模式 原理 将同一个资源,创建出两种模式的样式.系统根据当前选择的样式,自动获取该样式的资源 每次系统更新样式时,应用会调用当前所有存在的元素调用对应的一些重新方法,进行重绘视图,可以在对应的方法做相应的改动 资源文件适配 创建一个Assets文件(或在现有的Assets文件中) 新建一个图片资源文件(或者颜色资源文件.或者其他资源文件) 选中该资源文件, 打开 Xcode ->View ->Inspectors ->Show Attributes Inspectors (或者Opt

iOS13适配的实现方法

2019-09-09
1.私有KVC [self setValue:baseTabBar forKey:@"tabBar"]; //正常 [_textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];///崩溃 [_textField setValue:[UIFont systemFontOfSize:14] forKeyPath:@"_placeholderLabel.fo