自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Swift基于ARKit的仿抖音潜水艇小游戏

抖音的潜水艇小游戏只能玩一会儿,不尽兴,于是想着自己开发一个。 ARKit的各种入门介绍这里就不说了,网上一堆都是,自己注意甄别。 第一步,创建一个具有增强现实功能AR的项目: 选择语言Swift, SpriteKit是2D游戏引擎开发框架,考虑到游戏还是以2D画面为主,所以选择了S...

2020-04-21 15:59:31 134 0

原创 iOS-上传文件到阿里云OSS

首先,pod导入阿里云SDK; pod 'AliyunOSSiOS' 其次,配置SDK: NSString *accessKey = @"你从阿里云控制台拿到的key"; NSString *secretKey = @"你从阿里云...

2020-04-14 15:51:41 50 0

原创 Vue -- Mac编译运行Vue

1,打开终端 2,cd + 项目路径 3,输入命令:npm run dev 4,出现下图提示说明已经编译成功:浏览器中输入下面给的地址即可查看运行效果

2019-07-24 22:31:22 56 0

翻译 Swift -- protocol 'weak' cannot be applied to non-class type报错

protocol的两种形式: 1,protocol A { } 2,protocol A : class { } 首先说protocol A : class { } 这种形式被称为class-only protocol,只有类(不包括结构体、枚举)能遵循该协议。 弱引用只用在引用类型中。类...

2019-07-23 21:52:48 191 0

原创 Swift -- 仿今日头条转场效果 (二)

上回说到直接的pop和push效果已经有了,没有随手势滑动pop时的过渡效果,这篇继续记录说明。 //pop手势百分比 func navigationController(_ navigationController: UINavigationController, interacti...

2019-05-29 12:03:41 122 0

原创 Swift -- 仿今日头条转场效果 (一)

看效果先: 实现上面的效果需要用到一个类(UIPercentDrivenInteractiveTransition)和两个协议(UINavigationControllerDelegate,UIViewControllerAnimatedTransitioning) 首先 UIPercen...

2019-05-29 11:30:31 239 0

原创 隐私策略

隐私政策 本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除...

2019-05-15 13:42:18 35 0

原创 Xcode --- Multiple commands produce xxx /xxx/xxx/Info.plist

参考上一篇文章,解决方案是:选中项目--->Bulid Phases--->Copy Bundle resources--->找到info.plist文件,然后删除

2019-05-05 12:49:44 412 0

原创 Xcode -- unexpected duplicate task: CompileXIB xxx

低版本Xcode创建的项目在升级了Xcode到10.1版本之后,运行项目报错如下: 查阅资料后发现原因是Xcode在新版本中引入了新的build系统,新的编译系统对以下文件表现的比较严苛: 1,副本文件(例如xib文件) 2,achieve的时候未了达到最佳的编译速度而未被加入编译的文件...

2019-05-05 12:45:59 598 0

原创 GitLab — mac下如何上传本地项目到GitLab

1,准备一个GitLab或GitHub账户 2,确认是否存在公钥文件(.ssh文件),不存在的话新建一个 打开终端,输入命令:ssh-keygen 一顿操作之后,生成一个图如下: 然后输入命令查看:cat ~/.ssh/id_rsa.pub 你会看到一堆ssh-rsa开头的乱码,这就...

2019-04-08 17:51:51 1595 1

原创 iOS与前端交互 — Swift 与 Vue 2.0的交互

前提是前端用的Vue写的代码,普通HTML看下一篇。 先看交互效果: 上图是一个Swift加载的web界面,按钮”下一步“触发app端的一个事件,在此事件中app调用前端的alert方法出现弹框。看起来很简单的过程,我跟前端人员硬是调了两天。 先看Swift端的代码: // 定义...

2019-04-08 14:40:40 598 1

原创 UI设计— 利用软件Sketch制作镂空图标

打开Sketch,新建文件并点击左上角的”+“选择Image图片选项: 然后导入想要处理的目标图片: 既然是想要镂空效果,那就是把多余的空白部分给切掉。于是,鼠标左键双击图片进入编辑模式,也可以按键盘"Enter"键进入编辑模式,或者点击上面选项栏里的”Edit...

2019-04-03 22:19:56 591 1

原创 Swift SpriteKit写一个简单的打飞碟小游戏(三)

本篇主要分析和记录多个飞碟的随机出现过程和如何添加音效。 飞碟的随机出现这里的随机有两个地方: 1,两个飞碟出现的间隔时间在一个时间段内随机,如A先出现,隔2秒B出现,隔1秒或3秒C出现; 2,飞碟在x轴上的出现位置随机,范围是0~self.frame.size.width。 先挑容易下手...

2019-03-13 22:12:05 381 5

原创 Swift SpriteKit写一个简单的打飞碟小游戏(二)

按照上一篇的步骤,我们已经完成前两步了,接下来是第三步:添加物理效果。 在didMove方法中添加代码: self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame) self.physicsWorld.cont...

2019-03-13 18:00:00 141 0

原创 Swift SpriteKit写一个简单的打飞碟小游戏(一)

公司要凉凉,百无聊赖之际,码一个小游戏聊以慰藉。看效果: 这里用的iOS7 才出的一个框架SpriteKit,主要用于纹理渲染、添加特效和物理引擎等。 思路及步骤: 1、添加背景图、发射器、子弹和飞碟 2、让它们动起来 3、添加物理效果 4、添加爆炸效果 第一步很简单,找三张宇宙...

2019-03-13 15:39:49 902 0

原创 Swift 检测跳转到百度、高德地图进行路线规划功能

直接上代码吧,功能比较简单,写出来只是方便查找。 //地图类型 enum MapForm { enum MapURI:String { //百度 case baiduMap = "baidumap://" //高德 ...

2019-01-24 21:44:28 502 4

原创 iOS -- CellForRow和HeightForRow的调用顺序

iOS 10.3.2系统先走的HeightForRow然后再走的CellForRow方法,iOS 11系统先加载的cell然后计算的Height,这两个方法运行顺序的不同会给程序带来不一样的效果。 翻阅了几篇文章发现,不止iOS10.3.2有如此问题,整个iOS10及以下系统这两个方法的调用顺序...

2019-01-09 10:15:17 420 0

原创 Swift 高德地图自定义大头针自定义气泡

自定义大头针和自定义气泡的代码官方文档上都写的很详细,我这里不再记录,这篇主要记录的是自定义气泡上面有一个按钮,点击按钮响应对应事件的场景,效果如下: 上面的车是自定义的大头针,点击大头针弹出自定义气泡。 自定义一个View先: class CCPOICallOutView: UIVi...

2019-01-02 22:16:01 853 1

原创 SourceTree回退撤销上次提交commit

不小心commit了一个有问题的文件,想退到commit前的状态。 选中提交之前的状态鼠标右键点击,选择“Reset master to this commit”, 在跳出的弹框中有三个选项: Soft -keep all local changes 混合合并-保持工作副本并重置索引   ...

2018-12-20 17:26:58 4158 0

转载 iOS — block捕获自动变量的值

int val = 10; void (^blk)(void) = ^{printf("val=%d\n",val);}; val = 2; blk(); 上面这段代码输出值是:val = 10,而不是2,block截获自动变量的瞬时值。因为block保存了自动变量的值,所...

2018-10-15 17:23:08 165 0

转载 iOS 一个HTTPS连接的客户端与服务端交互过程

在一个HTTPS连接的网络中,输入账号和密码并单击登陆按钮后,到服务器返回这个请求前,这期间经历了什么? 答:具体经历了一下8步: 客户端打包请求。其中包括URL、端口、账号和密码等。使用账号和密码登陆应该用的是POST方式,所以相关的用户信息会被加载到body中。这个请求应该包含3个方面:网...

2018-09-26 21:43:32 701 0

原创 Swift 4.0 Codable 序列化

如果要将一个对象持久化,需要把这个对象序列化。过去的做法是实现NSCoding协议,但实现NSCoding协议的代码写起来很繁琐,尤其是当属性非常多的时候。 Swift 4中引入了Codable协议,可以大大减轻了我们的工作量。我们只需要让需要序列化的对象符合Codable协议即可,不用再写任何...

2018-09-21 14:39:35 602 0

原创 iOS 对象的归档和反归档(序列化)

在iOS中,对象的序列化和反序列化分别使用NSKeyedArchiver和NSKeyedUnarchiver两个类,我们可以把一个类对象进行序列化然后保存到文件中,使用时再读取文件,把内容反序列化出来。这个过程通常也被称为对象的编码(归档)和解码(解档)。 需要注意的是,NSKeyedArchi...

2018-09-19 11:10:17 586 0

原创 OC的自省

自省在OC中就是:判断一个对象是否属于某个类的操作。它有一下两种形式: [obj iskindOfClass:[SomeClass class]]; [obj isMemberOfClass:[SomeClass class]]; 在上面的代码中,第一行代码中的isKinOffClass...

2018-09-16 21:07:32 94 0

原创 Swift —— protocol的动态特性

protocolChef { func makeFood() } extension Chef { func makeFood() { print("Make Food") } } struct SeafoodChef:Chef...

2018-09-16 20:58:07 132 0

原创 Swift — struct与class的差异

内存分配 内存分配分为栈内存分配和堆内存分配两种 栈内存的存储结构比较简单,你可以简单的理解为push到栈底pop出来这么简单,而要做的就是通过移动栈针来分配和销毁内存 堆内存相比栈有着更为复杂的存储结构,他的分配方式你可以理解为在堆中寻找合适大小的空闲内存块来分配内存,把内存块重新插入堆来...

2018-09-10 14:22:14 1297 0

原创 Swift — 数据源中的同构和异构

对于Swift的集合数据来说,有同构和异构之分。如果你需要讨论一群鸟类或者一批飞机,那么这样的数据是同构的,比如包含鸟类的数组[Bird]和包含飞机的数组[Airplane]。有时你想要探讨的是这些空中家伙们的共性:飞翔,因此你的数据源可能同时包含Bird和Airplane,这样的是剧院叫做异构数...

2018-09-06 23:14:33 318 0

原创 Swift — 关键字try、try?、try! 和defer

try:和可选类型相似,编译器强制我们在使用可能跑出错误的房时使用try关键字。 try?:有点类似于可选型中的可选链,如果方法正确,则完整执行;如果跑出错误,则方法提前结束,但不会抛出错误进行处理。 try!:类似于可选型中的强制解包,同样不会对错误进行处理,但是一旦方法抛出错误,就会造成程...

2018-09-06 22:45:16 413 0

原创 iOS DZNEmptyDataSet源码解析

DZNEmptyDataSet是一个无数据时的空白页展示框架,支持自定义文字和图片,用起来很方便。最近研究了一下它的源代码,学习到了很多编程上的技巧。 基本用法以UITableView为例,UITableView只需要遵循DZNEmptyDataSet的代理方法,代理方法设置空白页显示文字和图片...

2018-08-27 11:52:32 240 0

翻译 iOS Swizzle的正确使用方式(原文翻译)

文章翻译自https://blog.newrelic.com/engineering/right-way-to-swizzle/    感谢作者Bryce Buchanan 通常在运行时,Swizzle是通过用一个方法的实现来替换另一个方法的实现来运作的。运用Swizzle可能是因为不同的需求...

2018-08-25 16:41:24 909 1

转载 iOS objectForKey与valueForKey的区别

objectForKey: returns the value associated with aKey, or nil if no value is associated with aKey. 返回指定 key 的 value,若没有这个 key 返回 nil. valueForKey: re...

2018-08-22 14:44:54 2120 0

转载 iOS _cmd的意义

在Apple的官方介绍里看到轻描淡写的说了一句:“The _cmd variable is a hidden argument passed to every method that is the current selector”,其实说的就是_cmd在Objective-C的方法中表示当前方法...

2018-08-21 11:34:51 311 0

原创 Swift 中如何理解copy-on-write

当值类型(如struct)在复制时,复制的对象和元、原对象实际上在内存中指向同一个对象。当且仅当修改复制后的对象时,才会在内存中重新创建一个新的对象。举例: //arrayA是一个数组,为值类型 let arrayA = [1,2,3] //arrayB这个时候与arrayA在内存中是同一个...

2018-08-09 23:12:18 345 0

原创 iOS--assign修饰对象类型会怎样?

首先我们需要明确,对象的内存一般被分配到堆上,基本数据类型和oc数据类型一本被分配在栈上。 如果用assign修饰对象,当对象释放后(因为不存在强引用,离开作用域对象内存可能被回收),指针的地址还是存在的,也就是说指针并没有被置为nil,下次再访问该对象就会造成野指针异常。对象是分配在堆上的,堆...

2018-08-09 22:50:27 1989 0

原创 MacBookPro 连接无线显示“密码无效”

当你确定输入的密码是正确的,却提示你密码无效,试了几次都不行的时候,把电脑上的USB端口上的设备都拔掉试试,USB3.0设备会影响wifi连接。

2018-07-27 10:16:17 15929 6

原创 iOS AFN网络请求报错: Invalid parameter not satisfying: URLString

string = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\...

2018-07-26 17:27:21 219 0

原创 CocoaPods安装报错:gem install cocoapods ERROR: While executing gem ... (Gem::FilePermissionError)

在cocoapods 执行 sudo gem install cocoapods的时候出现  While executing gem ... (Gem::FilePermissionError)    You don't have write permissions for the /u...

2018-06-26 23:24:29 242 0

原创 iOS assign与weak的区别

相同点:两者都是弱引用声明类型;不同点:weak声明的变量在栈中就会自动清空,赋值为nil;  assign声明的变量在栈中可能不会自动赋值为nil,就会造成野指针错误注意: 在MRC下,使用delegate时使用assign,ARC时用assign需要手动释放,建议用weak更安全。不管是MRC...

2018-06-20 14:40:16 138 0

原创 GCD dispatch_sync同步引起死锁的问题

截图中可以看到程序运行到主线程同步执行时出现崩溃,下面来分析一下崩溃原因:首先了解一下dispatch_sync:第一个参数 queue 为队列对象,第二个参数block为block对象。这个接口是同步将block扔到队列queue中去执行,即扔了我就等着,等到queue排队把这个block执行完...

2018-06-14 18:18:54 213 0

原创 Swift 部分控制器隐藏状态栏

方法一:第一步:找到info.plist文件,添加字段 View controller-based status bar appearance 为 NO;第二部:在目标控制器视图即将出现方法中添加代码 UIApplication.shared.setStatusBarHidden(true, wi...

2018-06-14 15:32:24 1459 0

提示
确定要删除当前文章?
取消 删除