![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
陈皮话梅糖@
这个作者很懒,什么都没留下…
展开
-
iOS自带的Speech语音识别功能封装
利用iOS原生框架进行语音识别操作原创 2023-05-16 16:13:25 · 571 阅读 · 0 评论 -
NFC读写工具
NFC读写工具是一款包含NFC读数据,复制数据,写入数据的工具类型APP,还包括iCloud的数据同步功能原创 2023-02-27 11:41:38 · 405 阅读 · 0 评论 -
利用OpenGLES渲染采集到的视频流
利用OpenGLES渲染采集到的视频流。原创 2022-10-10 10:50:35 · 649 阅读 · 0 评论 -
GLSL 加载两张图片并且混合
整理后的第二篇原创 2022-09-18 11:50:06 · 559 阅读 · 0 评论 -
iOS 实现UIScrollView的无限轮播 (转)
原文地址:https://www.jianshu.com/p/7c4b79e5b123在摆放图片时需要注意,我们需要在第一张图片的位置摆放最后一张图片(可能有点懵哈,不过不要着急慢慢往下看),然后我们依次摆放图片(从第一张到最后一张),最后在所有图片的尾部我们再放上第一张图片。这样我们就多放了两张图片(分别在首尾多放了一张图)。我把对应的方法写一下:/// 将图片放置在UIScrollV...转载 2020-03-02 12:14:55 · 278 阅读 · 0 评论 -
iOS pod Error installing libwebp 错误解决办法
出处:https://www.jianshu.com/p/009caf1df1d5错误信息如下:Installing libwebp (1.0.0)[!] Error installing libwebp[!] /usr/bin/git clone https://chromium.googlesource.com/webm/libwebp /var/folders/y5/1...转载 2019-12-31 09:52:12 · 1939 阅读 · 0 评论 -
利用runtime方法交换+load方法实现页面统计
介绍一下+load的特性:1、load方法是在runtime加载类和分类到内存的时候就会被调用,而且只会调用一次2、分类的+load是合并到了原来的类里面去3、但是跟普通方法调用的顺序不一样,源码里面通过方法地址先直接调用类的+load方法(load方法有一个单独的结构体存储),然后才调用分类的+load方法,所以类的load方法最先被执行,类的+load方法被执行之前,如果有父类的+...原创 2019-11-27 15:19:24 · 333 阅读 · 0 评论 -
Objective-C 分类底层原理分析
1、什么是分类iOS分类使用的场景就是把功能模块化,把一组类似的功能扩展出一个分类,便于代码的维护以及功能的分块2、分类的底层结构分类在iOS底层的数据结构如下:struct _category_t { const char *name; struct _class_t *cls; const struct _method_list_t *instance_metho...原创 2019-11-20 10:44:16 · 341 阅读 · 0 评论 -
SCNNode节点的用法详解
//// GameViewController.swift// SCNNode节点的用法详解//// Created by 柯木超 on 2019/4/9.// Copyright © 2019年 柯木超. All rights reserved.//import UIKitimport QuartzCoreimport SceneKitclass GameVie...原创 2019-04-09 17:57:08 · 1777 阅读 · 0 评论 -
CSNCamera-照相机
//// GameViewController.m// CSNCamera-照相机//// Created by 柯木超 on 2019/4/9.// Copyright © 2019年 柯木超. All rights reserved.//#import "GameViewController.h"@implementation GameViewController...原创 2019-04-09 18:54:37 · 315 阅读 · 0 评论 -
碰撞检测
//// GameViewController.m// 碰撞检测//// Created by 柯木超 on 2019/4/9.// Copyright © 2019年 柯木超. All rights reserved.//#import "GameViewController.h"typedef NS_ENUM(NSUInteger,MaskType) { M...原创 2019-04-09 19:04:18 · 747 阅读 · 0 评论 -
SCNAction 动画
//// GameViewController.m// SCNAction//// Created by 柯木超 on 2019/4/9.// Copyright © 2019年 柯木超. All rights reserved.//#import "GameViewController.h"@implementation GameViewController- ...原创 2019-04-09 20:21:09 · 499 阅读 · 0 评论 -
SCNGeometry 立体几何的使用
//// GameViewController.m// SCNGeometry几何对象//// Created by 柯木超 on 2019/4/9.// Copyright © 2019年 柯木超. All rights reserved.//#import "GameViewController.h"@implementation GameViewControll...原创 2019-04-09 20:54:56 · 690 阅读 · 0 评论 -
04 CALayer下面的几个专用图层的介绍
CALayer下面常用的主要包括以下几个重要的图层CAShaperLayer绘制立体贝塞尔曲线,绘制曲线,画圆,做圆角,某个部分圆角 CAGradrentLayer用于做颜色渐变 CAReplicatorLayer实现倒影效果 CATransformLayer用于3D结构的层次渲染 CAEmitteLayer用于控制粒子效果 下面对以上一个图层做介绍和使用方式...原创 2019-04-26 10:38:27 · 265 阅读 · 0 评论 -
Swift项目集成有盟推送
1、去自己的appstore开发者平台创建推送证书,包括develop(开发)和dis(生产) 两种环境的推送证书,下载下来,并且导出.p12文件2、友盟官网创建你的项目, 地址:https://message.umeng.com/list/apps创建完项目会得到一个Appkey 和App Master Secret3、选中友盟的应用信息模块,把第一步下载的两种证书导...原创 2019-08-06 14:57:23 · 490 阅读 · 0 评论 -
视频捕捉、录制、切换摄像头、聚焦
github下载链接:https://github.com/SSYSSK/camera2关于视频捕捉、录制、切换摄像头在上一篇博客有详细的讲解(https://blog.csdn.net/s12117719679/article/details/100513400),这里就不做过多解析聚焦的关键代码如下:点击手势,根据点击的位置转换成相机的聚焦点坐标-(void)...原创 2019-09-10 11:18:19 · 420 阅读 · 0 评论 -
利用Masonry实现键盘上面的输入框弹起动画
1、添加键盘监听通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];2、通知实现方法注意:跟新约束是要在superview操...原创 2019-10-09 12:04:58 · 371 阅读 · 0 评论 -
1、SCNView、SCNScene的使用
//// GameViewController.swift// SCNView//// Created by 柯木超 on 2019/4/9.// Copyright © 2019年 柯木超. All rights reserved.//import UIKitimport QuartzCoreimport SceneKitclass GameViewContro...原创 2019-04-09 17:13:03 · 1689 阅读 · 0 评论 -
03 CALayer 仿射变化的原理以及常用的三个方法
矩阵的几何意义代表的就是一个正方形对上面图形做一个旋转,得到新的图形由上图新的图形不仅仅是放大缩小,还发生了角度的变化CALayer 仿射变换最常用的三个方法1、旋转函数CATransform3DMakeRotation-(void)rotationAnimation { /** * @ param angle 旋转的度数 *...原创 2019-04-11 20:26:32 · 207 阅读 · 0 评论 -
02 CALayer 常用属性详解
创建一个最简单的动画,然后作用到CALayer上面1、先添加一个Layer// 创建一个基本的CALayer,然后添加一个动画 CALayer *layer = [[CALayer alloc]init]; layer.frame = CGRectMake(100, 100, 100, 100); layer.backgroundColor = [[UICo...原创 2019-04-11 18:13:49 · 215 阅读 · 0 评论 -
制作基于Swift 的Framework(通过module桥接引用oc.framework)
目前开发swift版本的SDK(framework) , 需要引用腾讯的sdk(framework),因为腾讯sdk是oc版本的,如果是普通swift项目引用,直接创建桥接文件就可以,但是framework桥接文件是没有用的,以下文档就是解决这个问题:怎么在Swift 的Framework工程里面引用oc的framework一、创建自己的swift framework工程创建完成后工程是这个样子:...原创 2018-03-29 17:58:09 · 5730 阅读 · 2 评论 -
objc_msgSend 执行流程
objc_msgSend 执行流程01 :消息发送1、先判断消息发送者是否为空,如果为空,直接退出,如果不为空,就通过类对象的isa指针找到类对象的方法缓存数据,看看缓存数据里面是否有这个方法,如果有,直接调用,2、如果没有,就去类对象的方法数组里面去查找这个方法(如果这个方法是排好顺序的,就用二分查找,如果是没有顺序的,就用普通查找),如果找到,直接调用,然后往缓存数组里面写入一条数据...原创 2018-09-28 17:51:18 · 829 阅读 · 0 评论 -
iOS方法缓存-散列表
Class 内部结构中有个方法缓存( cache_t ), 用散列表来缓存曾经调用过的方法,可以提高方法的查找速度 每个类都有一个自己的方法列表数组,每次调用方法的时候,都会去找当前的类的方法数组看看有没有这个方法,如果没找到,就去父类寻找,不过,在这些之前,最先去缓存数组cache 里面找,如果是第一次调用,在方法列表里面找到这个方法之后,会把这个方法在父类和当前累的缓存数组里面各保存·...原创 2018-09-28 17:58:14 · 1151 阅读 · 1 评论 -
KVO的本质
isa的指向介绍:kvo是通过runtime动态生成了一个(NSKVONotifying_原类名)的类,该类继承于被监听的类,该类的isa指针指向的是原类对象mach-KVOnotify_类名,而superclass指向的是被监听的类(父类) 这里借用小马哥的一张图,画的非常详细,MJ老师非常用心给我们制作的KVO的具体实现:在动态生成的类里面,重写被监听属性的set方法,...原创 2018-11-08 09:35:02 · 292 阅读 · 2 评论 -
runtime 替换系统 imageNamed 方法,同时适配iphone和ipad图片
创建 UIImage 分类UIImage+Category.h#import <UIKit/UIKit.h>#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)#define IS_PAD (UI_USER_INTERFACE_IDIOM()== UIUserInterfa...原创 2018-10-08 22:27:26 · 678 阅读 · 0 评论 -
iOS 高性能定时器解决方案2(商品打折倒计时)
1、上一篇 iOS 高性能定时器解决方案有缺陷,上一篇用的是代理设计模式,当离开当前界面时,代理就失效了,所以定时器的代理事件就不再执行,导致出错。现在这篇进行了改进,用通知实现。2、还是会有一个全局定时器import UIKitlet NotifyUpdateTime = NSNotification.Name(rawValue:"notifyUpdateTime")final c...原创 2017-03-20 11:13:53 · 612 阅读 · 0 评论 -
StoryBoard项目同时适配iPhone和iPad
以前公司项目需要做iPhone和iPad的版本,项目本来是storyboard+代码的模式,但是由于iPhone和ipad的横竖尺寸比例相差太远,以前按照屏幕比例适配的逻辑已经行不通,所以就试着建立两个storyboard,共用一个UIViewController的设计方案,基本上解决了这个问题,如果朋友有其他的的方案,可以给我留个言,我也一直想看看有什么改进的地方 1、StoryBoar...原创 2018-12-24 14:31:42 · 2759 阅读 · 0 评论 -
App抓包 -- 这里主要介绍 Charles
无论是作为一个移动端的开发者还是其他的网页端或者服务端开发人员,抓包都是必须要懂的,很多问题都只有通过抓包才能捕捉到。抓包工具有 Charles、 mitmproxy 和 mitmdump,一些简单的接口可以通过 Charles 或 mitmproxy 分析,找出规律,然后直接用程序模拟来抓取了 。 但是如果遇到更复杂的接口,就需要利 用 mitmdump对接 Python来对抓取到的请求和响...原创 2020-06-29 18:36:50 · 1614 阅读 · 2 评论 -
一个UITableView实现左右滑动刷新数据
//// ViewController.m// tableview左滑刷新//// Created by 柯木超 on 2019/3/19.// Copyright © 2019年 柯木超. All rights reserved.//#import "ViewController.h"@interface ViewController ()<UITableVi...原创 2019-03-19 18:04:08 · 396 阅读 · 0 评论 -
01、CALayer和UIView的区别
1. UIView 是iOS系统中界面元素的基础,所有的界面元素都继承自它。它主要包括两个东西:渲染和事件的响应。苹果之所以会把UIView拆分成渲染和事件响应两个部分,主要是为了兼容mac和手机端的点击事件不一样。2、它真正的绘图部分也就是渲染部分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView本身,更像是一个CALayer的管理器,访问它的...原创 2019-03-27 21:01:41 · 129 阅读 · 0 评论 -
02 基本动画的介绍
1、创建一个最基本的动画,然后往y轴做一个移动,当执行动画的时候,真正移动的不是layer本身,而是Presentation Tree,当动画移动的时候,会把原始涂层隐藏,动画完成后,就会把Presentation图层移除,原始涂层就会显示,所以动画会恢复成原来的状态-(void)touchesBegan:(NSSet<UITouch *> *)touches withEve...原创 2019-03-27 21:12:10 · 200 阅读 · 0 评论 -
SceneKit-碰撞检测和接触检测详解
1、SCNPhysicsBody要讲解碰撞检测和接触检测之前,首先先了解一个概念:SCNPhysicsBody每一个物体都属于一种类型:staticBody、dynamicBody、kinematicBody(1)staticBody是一个不受外力或碰撞影响的物体,不能移动。比如地板、墙壁等。必须把它附加到SCNNode的physicsBody属性上。附加到节点上后,会自动为节...原创 2019-04-11 16:59:33 · 1367 阅读 · 0 评论 -
iOS第三方库使用记录
1、多个控制器滚动切换YZDisplayViewControllerhttps://www.jianshu.com/p/b45655e23a42https://github.com/iThinkerYZ/YZDisplayViewController- (void)viewDidLoad { [super viewDidLoad]; self.hiddenNa...原创 2019-04-02 16:53:02 · 186 阅读 · 0 评论 -
01核心动画的学习概要
核心动画的学习建议1、 API的熟练调用2、 把复杂动画进行拆分几个简单动画的组合3、 具备一定的三角函数的计算能力,例如角度转弧度,弧度转角度,反三角函数的计算等等4、其实学习核心动画可以做的事情有很多,做动画仅仅是他的冰山一角而已,还可以做图形的绘制,投影等等核心动画的技术架构在2015年之前,Core Animation的底层直接是openGL ES,2015年...原创 2019-04-11 18:11:06 · 133 阅读 · 0 评论 -
iOS 捕获全局异常,统一收集
参考博文:http://www.cnblogs.com/easonoutlook/archive/2012/12/27/2835979.html开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退。流畅的操作被无情地Crash打断,当程序运行Crash的时候,系统会把运行的最后时刻的运行信息记录下来,存储到一个文件中,也就是我们所说的Crash文件,当时如果是真机原创 2017-01-12 18:22:47 · 7417 阅读 · 0 评论