自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 资源 (2)
  • 收藏
  • 关注

原创 iOS-自定义相机拍照获取指定区域图片

功能并不难,之所以被难住是因为把问题想复杂了,记录一下。自定义的相机拍照使用AVCaptureSession,获取指定区域图片使用图片裁切功能,重点在于不能直接使用AVCaptureSession获取到的图片,需要对图片进行放大处理然后再裁切。自定义相机@property (nonatomic, strong) AVCaptureSession *captureSession; // 会话@property (nonatomic, strong) AVCaptureDevice * capt

2022-03-17 14:32:44 2560 1

原创 iOS-工程多环境配置

记录项目使用多target和组件化开发的一些总结

2022-03-14 21:46:18 553

原创 iOS-工程多target下的Podfile配置

两种方式:1,# 使用关键字abstract_target,使用多个target共享同一个pod,这里是common_podabstract_target 'common_pod' do pod 'AFNetworking' # targetA 单独拥有 target 'targetA' do pod 'Masonry' end # targetB 单独拥有 target 'targetB' do

2022-03-08 17:54:51 908

原创 iOS-创建本地Pod库

创建本地pod库的目的是项目组件化拆分,把功能和业务最大限度的解耦。1,创建新工程ComponentTest,初始化pod:cd 项目路径pod init2,创建需要pod本地管理的类文件,就叫Snow.h Snow.m文件

2022-03-08 17:06:32 4873

原创 pod lib create 报错的问题

1,fatal: unable to access 'https://github.com/CocoaPods/pod-template.git/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

2021-06-10 11:15:50 1307 2

原创 Git merge之后Xcode工程打不开的解决办法

俩分支merge之后,项目就打不开了,点开就是一个弹框:

2021-06-07 15:16:19 583 1

原创 iOS - 微信分享无法显示好友列表

问题:分享给好友功能,能调起微信但是调起来之后,显示微信与当前app连接,然后直接就显示的微信的首页,没有好友列表;解决:微信分享需要配置universal-link,universal-link里面的参数跟当前app对应的苹果开发者账号里的AppId(或Team ID)有关,app之前是从别的开发者账号转移过来的,所以需要修改里面的参数;或者里面的参数配置有误;...

2021-04-29 15:56:08 1278

原创 一张gif

一张gif

2021-04-25 23:33:01 85

原创 Xcode代码无法高亮

Xcode是否打开了index索引:以下命令为打开索引:defaults write com.apple.dt.XCode IDEIndexDisable 0关闭索引:defaults write com.apple.dt.XCode IDEIndexDisable 1

2021-03-18 10:58:32 524

原创 iOS--无法加载dae文件

事情经过:本来项目运行的好好的,目录中的dae加载没问题。某一天给Mac升级完系统,打开Xcode提示安装commond line,于是重新装了一遍,再打开项目就出现了dae文件找不到路径,SCNScene无法通过[SCNScene sceneNamed:]方法创建荧幕,并且项目伴随着一个警告:提示说缺少了scntool这么个东西,SceneKit 解析相关的工具。解决办法:cmd + , 调出设置面板,选择Locations-->Commond Line Tools,选择你当前用

2021-03-16 11:59:33 530

原创 Pod出错--Could not automatically select an Xcode project

今天用pod导入第三方,突然就报错了,检查了一圈podfile写的也没问题:查阅相关文章说是podfile中的命令找不到目标工程,有可能是工程路径发生了变化,解决起来不知从何下手。参考了这篇文章,自己修改了一下,问题得到了解决:在pofile中添加一句话:xcodeproj '你工程的名字.xcodeproj'再次执行pod install ,可以整成导入SDK。感谢https://blog.csdn.net/weixin_30708329/article/details/95

2021-02-18 11:49:08 2012

原创 Swift 渐进色背景设置

记录一次给UILabel添加渐进色背景的过程:思路:UILabel继承自UIView,而项目中也有不少UIView和其子类也要设置渐进色,所以通过给UIView添加一个延展方法,子类调用延展方法即可。具体方法://方向枚举,这里只列出两个enum GradientDirection { case Horizontal ///水平 case Vertial ///垂直}//MARK:渐进色extension UIView { func addGradi

2020-12-04 12:29:12 1135

原创 微信小程序-普通项目如何设置为云开发项目

最近写了一个简单的记价小程序,由于之前不知道小程序有云开发的功能,自己也不了解服务器开发,很多数据都是保存在了小程序本地,显然数据传到服务器是最合适的。接触了云开发之后,发现这些问题都可以解决,但是之前创建项目的时候没有选择云开发这一项,怎么把它改成具备云开发的功能呢?首先,打开项目左上角开通云开发功能,然后在项目project.config.json文件中添加配置 "miniprogramRoot": "miniprogram/", "cloudfunctionRoot": "clo

2020-11-10 13:54:37 6966 8

原创 CSS position属性学习

position属性决定了html元素在页面中的定位方式以及定位的参照对象。static 定位方式:静态定位(默认值),默认文档流,依据默认文档流中元素的顺序依次排列;absolute 绝对定位,定位文档流,相对于非static定位的父元素进行定位;relatice 相对定位,定位文档流,相对于自身在默认文档流中的位置进行定位;fixed 固定定位,定位文档流,相对于浏览器视口进行定位。position定位布局:定位控制,定位层对象可以通过4个方向属性来控制定位: top bo.

2020-10-30 11:24:25 124

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

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

2020-04-21 15:59:31 1070

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

首先,pod导入阿里云SDK;pod 'AliyunOSSiOS'其次,配置SDK:NSString *accessKey = @"你从阿里云控制台拿到的key"; NSString *secretKey = @"你从阿里云控制台拿到的key"; NSString *endpoint = @"https://oss-cn-hangzhou.aliyuncs.com"...

2020-04-14 15:51:41 2484

原创 Vue -- Mac编译运行Vue

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

2019-07-24 22:31:22 448

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

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

2019-07-23 21:52:48 1623

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

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

2019-05-29 12:03:41 523

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

看效果先:实现上面的效果需要用到一个类(UIPercentDrivenInteractiveTransition)和两个协议(UINavigationControllerDelegate,UIViewControllerAnimatedTransitioning)首先 UIPercentDrivenInteractiveTransition类,官方文档说明:一个控制两个控...

2019-05-29 11:30:31 924

原创 隐私策略

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

2019-05-15 13:42:18 115

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

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

2019-05-05 12:49:44 630

原创 Xcode -- unexpected duplicate task: CompileXIB xxx

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

2019-05-05 12:45:59 2024

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

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

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

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

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

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

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

打开Sketch,新建文件并点击左上角的”+“选择Image图片选项:然后导入想要处理的目标图片:既然是想要镂空效果,那就是把多余的空白部分给切掉。于是,鼠标左键双击图片进入编辑模式,也可以按键盘"Enter"键进入编辑模式,或者点击上面选项栏里的”Edit“,可以看到右边出现两个框:先来解释一波哈,Selection是自己选择,Magic Wand 是魔法棒识别,这...

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

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

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

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

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

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

2019-03-13 18:00:00 708

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

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

2019-03-13 15:39:49 2437

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

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

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

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

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

2019-01-09 10:15:17 1154

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

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

2019-01-02 22:16:01 1714 2

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

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

2018-12-20 17:26:58 9187

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

int val = 10;void (^blk)(void) = ^{printf("val=%d\n",val);};val = 2;blk();上面这段代码输出值是:val = 10,而不是2,block截获自动变量的瞬时值。因为block保存了自动变量的值,所以在执行block语法后,即使改写block中使用的自动变量的值也不会影响block执行时自动变量的值。尝试改写blo...

2018-10-15 17:23:08 404

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

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

2018-09-26 21:43:32 1286

原创 Swift 4.0 Codable 序列化

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

2018-09-21 14:39:35 1400

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

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

2018-09-19 11:10:17 1408

原创 OC的自省

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

2018-09-16 21:07:32 234

原创 Swift —— protocol的动态特性

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

2018-09-16 20:58:07 328

原创 Swift — struct与class的差异

内存分配内存分配分为栈内存分配和堆内存分配两种栈内存的存储结构比较简单,你可以简单的理解为push到栈底pop出来这么简单,而要做的就是通过移动栈针来分配和销毁内存堆内存相比栈有着更为复杂的存储结构,他的分配方式你可以理解为在堆中寻找合适大小的空闲内存块来分配内存,把内存块重新插入堆来销毁内存,当然这些仅仅只是堆内存相比栈内存性能消耗大的一个方面,更重要的是堆内存支持多线程操作,相应的...

2018-09-10 14:22:14 5438

Swift基于ARKit仿抖音潜水艇游戏

Swift基于ARKit仿抖音潜水艇游戏

2020-04-21

transformation.zip

iOS 高仿今日头条转场动画Swift版

2019-05-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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