
iOS开发
文章平均质量分 91
Style_月月
越努力,越幸运
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
理解 RGB & YUV 颜色编码
RGB 和 YUV 都是色彩空间模型,下面来分别介绍下RGB 颜色编码RGB颜色编码格式,是指每种颜色都可以用(红,绿,蓝)三种原色来表示,将RGB分别取不同的值,会展示不同的颜色。用RGB表示的图像中,每个像素点都有红、绿、蓝三个原色,每种颜色都占用8 bit,即一个字节,所以一个像素点占用24bit,即3个字节,如下图所示当有一张 1280 * 720 大小的图片时,该图片中有 1280 * 720个像素点,其中每个像素点都采用RGB编码格式,那么这张图片就会占用1280 * 720 * 3原创 2020-08-27 22:23:05 · 2010 阅读 · 2 评论 -
iOS 粒子效果实现:CAEmitterLayer + CAEmitterCell
粒子效果的实现需要使用两个类:CAEmitterLayer 和 CAEmitterCellCAEmitterLayerCAEmitterLayer是Core Animation中的特殊图层,继承自CALayer,是一个粒子发射器,用于控制粒子效果属性属性说明emitterCells粒子数组,创建好的粒子样式,需要放入数组中,支持多种粒子样式birthRate粒子的产生率,默认是1.0lifetime粒子的生命周期,默认是1.0emitterPosition原创 2020-08-06 19:39:29 · 1308 阅读 · 0 评论 -
OpenGL ES 案例03:CoreAnimation绘制立方体+旋转
在不会OpenGL ES的情况下,如何利用CoreAnimation实现一个立方体,并旋转,整体效果如下整体实现的思路如下主要分为两部分ViewDidLoad函数:初始化工作update更新:定时器实现旋转ViewDidLoad函数初始化工作包含两部分:addFaces:添加6个面,通过变换组合成立方体addCADisplayLink:添加定时器,并放入runloopaddFaces函数这部分主要是将6个面作相应的变换添加到容器中OC版本//添加面- (void)原创 2020-07-28 16:58:17 · 470 阅读 · 0 评论 -
OpenGL ES 案例02:GLKit绘制立方体+旋转
本案例是实现一个有纹理的立方体,并根据任意轴旋转,整体效果如下未加光照增加光照效果[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3ZRbOE5-1595926598305)(https://upload-images.jianshu.io/upload_images/2251862-e9c8473961298dc3.gif?imageMogr2/auto-orient/strip)]增加光照的主要的思路如下代码的实现主要分为4部分:准备工作:这原创 2020-07-28 16:57:08 · 710 阅读 · 0 评论 -
OpenGL ES 入门:GLKit加载图片
本案例的目的在于熟悉GLKit框架的使用,如果还有不了解的,可以看看这篇文章二、GLKit 及 常见API整体效果图如下:准备工作创建一个iOS项目,并将系统创建的ViewController的父类由UIViewController修改为GLKViewController,其中的view的父类由UIView修改为GLKViewOC版本在ViewController.h文件中导入GLKit框架的头文件#import <GLKit/GLKit.h>在ViewController.h原创 2020-07-28 16:56:24 · 741 阅读 · 0 评论 -
iOS 常见触发离屏渲染场景及优化方案总结
以下方案,常用的阴影、圆角等经过笔者测试可行,剩余场景方案仅供参考,并未实际测试对什么是离屏渲染,以及为什么会产生离屏渲染尚不了解的建议看看四、深入剖析【离屏渲染】原理这篇文章,再来阅读本文在离屏渲染触发的场景中,按照性能影响从高到低排序,如下所示shadows(阴影)conerRadius > 0 + maskToBounds = true(常见的圆角设置手段)mask(遮罩)allowsGroupOpacity(组不透明)edge antialiasing(抗锯齿)下面针对不同原创 2020-07-14 16:48:02 · 1452 阅读 · 0 评论 -
iOS中常用的圆角处理方式总结
最简单的方法,是让UI提供带圆角的图片以下几种是通过代码设置的,均可以避免触发离屏渲染,提高性能通过在ImageView的layer设置圆角 let btn0 = UIButton(type: .custom) btn0.frame = CGRect(x: 100, y: 60, width: 100, height: 100) //设置圆角 btn0.layer.cornerRadius = 50 self.view.原创 2020-07-08 16:09:17 · 1202 阅读 · 0 评论 -
四、深入剖析【离屏渲染】原理
深入剖析【离屏渲染】原理离屏渲染与正常渲染屏幕上最终显示的数据有两种加载流程正常渲染加载流程离屏渲染加载流程从图上看,他们之间的区别就是离屏渲染比正常渲染多了一个离屏缓冲区,这个缓冲区的作用是什么呢?下面来仔细说说首先,说说正常渲染流程正常渲染流程APP中的数据经过CPU计算和GPU渲染后,将结果存放在帧缓冲区,利用视频控制器从帧缓冲区中取出,并显示到屏幕上。在GPU的渲染流程中,显示到屏幕上的图像是遵循大画家算法按照由远及近的顺序,依次将结果存储到帧缓冲区视屏控制器从帧缓冲区中原创 2020-07-07 16:57:02 · 2289 阅读 · 0 评论 -
二、屏幕卡顿 及 iOS中的渲染流程解析
屏幕卡顿屏幕卡顿是指图形图像的在显示时出现了撕裂(即图片错位显示)、掉帧(重复显示同一帧数据)等问题,导致用户能直观的从屏幕上看到的一种异常现象为什么会出现这种情况呢?下面就来详细解说下屏幕卡顿###【高频面试题】屏幕卡顿的原因主要有以下三种原因CPU和GPU在渲染的流水线中耗时过长,导致从缓存区获取位图显示时,下一帧的数据还没有准备好,获取的仍是上一帧的数据,产生掉帧现象,掉帧就会导致屏幕卡顿苹果官方针对屏幕撕裂问题,目前一直使用的方案是垂直同步+双缓存区,可以从根本上防止和解决屏幕撕裂,但原创 2020-07-05 22:17:46 · 760 阅读 · 0 评论 -
Swift:LLDB调试
Swift:LLDB调试1、expression修改简单的逻辑当我们需要调测一小块变量,并且需要修改部分参数为指定值,一般的操作都是在代码中手动修改。那么如何在不用重新运行项目的情况下修改,这就需要使用 expresion 了1.1 expresion有两种使用方式在LLDB中输入:每次都要输入expression 参数 = 指定值po 参数在断点中配置:只需要输入一次1)右键选中 Edit Breakpoint2)点击 anction3)在下图标识的1中输入需要制定的参原创 2020-06-16 14:08:33 · 509 阅读 · 0 评论 -
swift/ios:error(报错)汇总(持续更新)
1、 error “_OBJC_CLASS_$_XXXXXXX”, referenced from: objc-class-ref in解决方案:根据_OBJC_CLASS_$_的XXXXXXX找到对应的类库,添加即可2、崩溃:Trapped uncaught exception 'NSInternalInconsistencyException', reason: 'Client e...原创 2020-05-08 16:30:32 · 1469 阅读 · 0 评论 -
iOS 13.3.1版本 真机调试报错:dyld_shared_cache_extract_dylibs failed 解决方案(亲测有效)
问题:ios13.3.1真机调试报错dyld_shared_cache_extract_dylibs failed解决方案:1、前往文件夹:~/资源库/Developer/Xcode/iOS DeviceSupport/13.3 (17C54)/Symbols/System/Library/Caches/com.apple.dyld,拷贝com.apple.dyld2、前往文件夹:~...原创 2020-03-18 15:41:58 · 3710 阅读 · 7 评论 -
swift 将图片资源打包成Bundle
有时在项目中直接把图片放到Assets.xcassets中,或者直接拖拽到项目中,会使得项目的包过大。解决办法:需要将图片资源打包成bundle打包过程如下:1、创建bundle选择target下的+号-->选择macOS-->选择Framework & Library 下的Bundle,创建bundle2、配置bundle前往bui...原创 2019-07-18 18:34:00 · 2414 阅读 · 0 评论 -
组件化:CocoaPods搭建私有仓库
一、cocoapods公共仓库1、查看cocoapods 本地目录使用 finder-->前往文件夹,输入:~/.cocoapods/repos跳转至本地cocoapods目录cocoapods本地目录如下所示:master:是cocoapods对应的公共git仓库Myspecs:是自己创建的私有仓库地址(后面会提到如何创建)二、搭建自己的p...原创 2019-07-09 17:38:08 · 598 阅读 · 0 评论 -
iOS Mac虚拟机搭建本地Apache服务器
目的:用于自己测试的服务器1、为什么选择Apache?1)、mac自带 2)、使用广泛 2、前提在系统设置->用户与群组设置账户密码(即电脑启动登陆的用户、密码,已设置请忽略) 3、搭建Apache服务器1)、首先在finder ->偏好设置 ->边栏 中勾选 家 的选项,然后在 家 目录中创建一个文件夹 Sites,将需要用到的资源放入该文...原创 2019-02-20 17:21:56 · 787 阅读 · 1 评论 -
【转】 iOS经典面试题
原文地址:http://blog.cocoachina.com/article/13706前言 写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS面试题和答案让我帮忙看看。我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖。整篇题目30多个没有一个答案是对的,总结这篇面试题的作者对iOS机制根本就是一知半解就敢发到网上,不管有心还是无心都是坑害新人。所以在这里总结一下这几年转载 2016-06-27 10:22:10 · 593 阅读 · 0 评论 -
iOS开发之拆分数组
记录下,以备后用。。主要说下关于数组按照固定长度拆分成不同数组的问题思路:首先是将你需要拆分的数组用count计算大小,然后用总得大小除以指定长度求余即%,得出数组拆分出的总个数,利用总个数for循环,在循环里在进行循环拆分数组,得到的子数组再加入数组并返回这个数组。主要代码如下:#pragma mark -- 将数组拆分成固定长度/** * 将数组拆分成固定长度的子数组原创 2016-07-07 16:56:57 · 10485 阅读 · 0 评论 -
iOS之手机信号的查看与判断
今天写的内容呢是判断当前手机是否有信号。。主要有两种方式:1、通过打开“电话”输入 “ *3001#12345#* ”,按拨号键,跳转到Field Test界面,这时左上角的信号原点会显示成数字,接着再同时按下开机键和Home建直到手机关机,重启后就可以点击左上角进行原点和数字切换了。注意:若想变为之前原点的显示,只需原创 2016-06-23 12:01:58 · 3993 阅读 · 0 评论 -
iOS远程推送Demo和PHP服务器配置、以及问题的解决方法
写这篇文章的目的是为了自己做笔记,以免下次再出现同样的错误,如果对你有帮助,你可以接着往下看看。。。。1、配置APNs相关证书 关于相关证书的配置,参考的是网上的博客:http://zxs19861202.iteye.com/blog/1532460。其中公钥和私钥的文件的p12导出一定要导正确,不然在服务器发送时会报错,楼主就犯了这个错误。这块会在后面提及。 特别原创 2016-06-20 12:30:45 · 3982 阅读 · 0 评论 -
iOS开发之打包测试包
今天因为涉及打包测试包,所以记录下。。。。目的: 主要是为了方便测试程序功能以及查看程序占有的内存。步骤:前提条件:有苹果的开发者帐号1、从钥匙串请求证书-->存储到磁盘-->继续2、登录苹果开发者帐号,点击打开链接,创建发布证书certificate-->导入钥匙串请求的证书-->Download-->双击ios_distribution.cer文件--原创 2016-07-19 11:28:38 · 1813 阅读 · 0 评论 -
swift 判断当前时间是否在一周7天的某几天固定时间段内
项目需求:根据用户选择的某时间段及7天中的某几天重复执行某种操作步骤:1、获取当前时间,并获取当前时间对应的星期var today = Date() let todayDay = TimeAndDateOperation.getweekDayWithDate(today)//根据日期获取是星期几 class func getweekDayWithDate(_ date ...原创 2018-04-28 16:20:22 · 2370 阅读 · 0 评论 -
swift 实现导航栏随tableView滑动颜色渐变、头部图片往上移动效果和往下放大效果
需求:实现导航栏随tableView滑动颜色渐变、头部图片往上移动效果和往下放大效果最终效果如下:准备工作:先用storyboard创建一个视图控制器(UIViewController),加入视图(TableView),并添加约束1、用imageView作头部背景图片,并保存初始frame //图片 self.bgView = UIImageView.init...原创 2019-01-03 15:18:35 · 2379 阅读 · 0 评论 -
ios mac利用终端上传本地代码至github
1、首先注册在gitbub官网注册一个GitHub账号2、1)点击new repository创建一个项目仓库->2)给仓库命名->3)仓库描述(可省略)3、打开终端,执行命令行1)cd 项目路径2)git init3)配置ssh:ssh-keygen -t rsa -C "登陆邮箱"(登陆邮箱即自己登陆github账号的邮箱)⚠️:执行到这里...原创 2019-01-03 15:58:16 · 443 阅读 · 0 评论 -
VMware 安装Mac OS 10.13系统
vm虚拟机mac os 10.12升级到10.13,在升级过程中报错,出现蓝屏,所以只能重装虚拟机重装虚拟机步骤:准备工作:window已安装好了vmware,下载好macos10.13 iso映像文件和darwin8.5.8macos10.13级darwin8.5.8下载地址:https://pan.baidu.com/s/1QB203Se1c_2GZk7ykhNNTg 提取码:...原创 2019-01-04 13:12:39 · 9035 阅读 · 10 评论 -
IOS cocoapods镜像源更新
(https://ruby.taobao.org --> https://gems.ruby-china.org)由于https://ruby.taobao.org镜像源已经停止更新,导致项目pod install的时候无法pod三方库,需要将目前的镜像源更改为https://gems.ruby-china.org。//https://gems.ruby-china.com(目前本地用的...原创 2019-01-02 14:14:01 · 9931 阅读 · 0 评论 -
iOS 证书配置(VoIP证书、APNs证书、p12导出)
1、前提:需要在mac的“钥匙串访问-->证书助理-->从证书颁发机构请求证书...”请求后缀为certSigningRequest的证书用于在官网创建VoIP和APNs证书注:certSigningRequest主要包含用户mac的信息,用于苹果官网申请证书1)、“钥匙串访问-->证书助理-->从证书颁发机构请求证书...” 2)、输入用户的电子邮箱,...原创 2019-01-02 14:44:33 · 5217 阅读 · 0 评论 -
Swift Callkit扩展--来电标记
需求:需要实现项目中根据号码从服务器查询返回的标记写入calllkit放骚扰标记系统库中,来电时显示该标记最终的效果如图所示:一、准备工作1、新建一个swift 项目2、创建callkit扩展:选择file->new->target,选择Call Directory Extension,输入扩展的名称,创建好后选择Activate 3、想实现项目...原创 2019-01-09 15:58:09 · 1640 阅读 · 2 评论 -
【转】alloc、init你弄懂50%了吗?
原文地址:http://www.cocoachina.com/ios/20160627/16823.html 前言这是一篇我记录对alloc、init分析思考的笔记。如果读者想看懂我的第二个思考,可能需要您至少了解内存的分段分页管理,如果您对其一点都不知道,可以先看这篇软文简单了解一下。另外很重要的一点是,请先思考。思考1.对象为什么要alloc,init又是干转载 2016-06-27 09:54:11 · 604 阅读 · 0 评论