- 博客(129)
- 资源 (23)
- 收藏
- 关注
原创 M1芯片升级Mac OS Ventura/Xcode14.3报错‘BUAdSDK/BUAdSDK.h‘ file not found
M1芯片升级Mac OS Ventura/Xcode14.3后,真机运行正常,但是模拟器运行报错’BUAdSDK/BUAdSDK.h’ file not found,找不到穿山甲SDK的头文件。按照以往的处理方式,使用Rosetta模式打开Xcode就行,但是升级后竟然没了此选项…
2023-04-18 12:20:27
1203
原创 iOS显示电子数字
效果如图:通过Graphics绘制,使用只需要两行代码:let j = XCDigitView(frame: CGRect(x: 250, y: 720, width: 100, height: 200))j.value = 0完整代码:实现思路:就是完整绘制一个8字,每一画根据当前显示的数字,决定这一画的颜色,举例绘制最上面一横: // 第一横 func render1(context:CGContext) { if (value == 0 || value
2022-05-23 18:58:46
321
原创 App Tracking Transparency被拒解决
App Tracking Transparency如果使用了App Tracking Transparency,苹果要求在iOS 14.5及以上的版本中必须在弹框取得用户同意后,才可以跟踪用户。否则会被拒:解决方案参照官方文档说明(https://developer.apple.com/documentation/apptrackingtransparency),只需要简单两步:1、添加NSUserTrackingUsageDescription声明打开info.plist,右键选择Add Ro
2021-06-23 09:40:01
10250
原创 react-native安装Ant Design
1.集成Ant Design到项目项目根目录中执行命令:npm install @ant-design/react-native --save2.集成按需加载babel-plugin-import到项目项目根目录中执行命令:npm install --save-dev babel-plugin-import3.创建.babelrc文件根目录中创建新文件,命名为.babelrc,编辑内容为:{ "presets": [ "module:metro-react-nati
2020-11-27 15:21:27
994
原创 【Swift】变量/常量/类型总结
1、变量(Variable)变量,可以理解为存放某一类型的值的容器,如:var count:Intvar shouldRemind:BOOLvar text:Stringvar list:[ChecklistItem]一个变量的数据类型,决定了它能存放什么类型的数据。有些变量只存放简单的值,如Int、Bool。另一些变量存放相对复杂一些的类型例如String、Array。常见的基本...
2020-04-30 14:57:22
391
原创 【一步步学小程序】3. 使用自定义组件(component)
上一节创建了一个包含多个课程数据的列表。这一节我们用自定义组件(component),来优化列表页面,即如图,我们把每个课程单元格封装为组件。使用组件的好处:自定义组件可以在不同的页面中重复使用将复杂的页面拆分成多个低耦合的模块,有助于代码维护1、首先我们在项目根目录中创建component目录,用以存放项目开发过程中创建的所有自定义组件。2、接着创建课程组件course,只需要在...
2020-04-23 17:25:51
437
原创 【一步步学小程序】2.列表展示
我们上一节已经创建了一个可以点击切换的tabbar。这节我们开始正式敲代码,在首页上展示一个可以上下滚动的课程列表:首先打开上一节的pages/home/homeMain/homeMain.wxml文件,布局相关代码都会在此文件中,小程序的布局方式类似Html标签,也有点类似Android中的xml布局文件或SwiftUI。IDE默认已经帮我们创建了一行布局代码:<text>pa...
2020-04-07 17:59:44
364
原创 【一步步学小程序】1.创建项目以及TabBar
1.创建项目如图,创建项目,输入项目名称、选择目录,AppID是唯一标识,我们可以先点如图红框内的测试号,自动生成一个AppID,然后点新建即创建完一个新项目。2.创建3个页面确保如图左上角的编译器按钮是选中状态,此时我们就可以看到项目的文件结构和编译器打开app.json文件。所有页面都需要在此json中的pages标签下进行声明。我们看到开发工具已经帮我们创建了两个页面index和...
2020-03-28 12:39:46
292
原创 Quartz2D在项目中的实际使用
还记得大学刚学iOS那会,从学校图书馆借了本iOS开发的书,有一章节介绍了Quartz2D,当时看得一头雾水,感觉这画画线,画画圆有什么用呢????️?工作一段时间后,遇到了一些需求,终于可以把咸丰年学的Quartz2D知识拿出来用一用了????。下面总结下这些年做项目用到Quartz2D的7个例子。一.单纯画个圈。有个项目要模仿呆萌价APP顶部轮播图,然后轮播图后面需要有个圆弧:一看到这需求,不简单...
2020-03-10 16:59:52
297
原创 Swift学习总结【持续更新】
1. try、try?、try!的区别:try:需要用catch捕捉异常,如: do { let data = try encoder.encode(item) try data.write(to: dataFilePath(), options: .atomic) } catch { print("Error e...
2020-02-15 13:02:12
511
原创 通用的排序按钮
排序按钮,使用Core Graphic绘制,可以指定颜色、大小、字体等:使用场景如下:1.使用方法下载demo代码。将HYRankView.h和HYRankView.m代码拖入工程。然后使用如下代码,即可快速添加一个名称为价格的排序按钮HYRankView *view = [HYRankView viewWithTitle:@"价格" frame:CGRectMake(0,100,8...
2020-02-06 17:20:18
1810
原创 pod setup慢的解决方法
最近使用pod setup更新CocoaPods本地检索库,无奈只有10几k,还中途报错。最终通过以下步骤,完成更新。1.手动下载Specs检索库执行pod setup后,实质是从github上clone检索库(https://github.com/CocoaPods/Specs),所以我们可以改为手动从github上下载后,前往文件夹:~/.cocoapods/repos将文件复制进去...
2020-01-23 15:07:39
574
原创 【React Native】iOS原生导航跳转RN页面
上一篇介绍了React Native使用react-navigation进行导航跳转页面,现在我们介绍下原生iOS中怎么导航进一个新的React Native页面。一、原生跳转React Native创建HYReactNativeManager管理类.在HYReactNativeManager.h中声明实现声明RCTBridgeDelegate协议,并声明一个全局bridge的属性@i...
2019-05-22 20:58:37
2133
原创 【React Native】react-navigation导航使用方法
上一篇介绍了如何在已有iOS项目中集成React Native。这一篇我们把上一篇的demo做下拓展,添加点击电影跳转到详情页。页面跳转使用React Native推荐的第三方导航控件:react-navigation集成react-navigation根据官方指引,在终端cd到项目根目录,分别输入以下命令进行集成:npm install --save react-native-navi...
2019-05-21 20:00:34
2850
原创 给iOS开发者的React Native入门使用教程
目录一. 原生iOS项目集成React Native二. 原生跳转RN页面三. 显示豆瓣热门电影列表四. 改为导航一. 原生iOS项目集成React Native创建一个新的文件夹,如RNProject,然后新建一个/ios的子文件夹,将已有的iOS项目全部文件复制进去。在RNProject根目录创建package.json文件,内容如下:{ "name": "RNProj...
2019-05-20 11:35:58
1706
原创 一道GCD笔试题分析
dispatch_queue_t queue = dispatch_queue_create("com.ihunyu.test", DISPATCH_QUEUE_CONCURRENT); NSLog(@"1"); dispatch_async(queue, ^{ NSLog(@"2"); dispatch_async(queue, ^{ ...
2019-04-25 15:20:20
424
原创 利用Injection插件加快Xcode"编译"速度
我们在调试iOS原生代码时,每次修改都需要Command+R来重新编译运行。当项目代码量很大,编译时间就会很漫长。因此对于开发中来说,如果能加快编译速度,能大大提高生产效率。如果我们能像Swift Playground、小程序或网页那样修改代码后能实时在界面上反馈出来就好了。然鹅,还真的有这样的Xcode插件,让你可以修改代码后立即在模拟器或真机上看到改变,它便是Injection for Xco...
2019-04-20 22:01:50
606
原创 Runloop总结
1.什么是RunloopRunloop字面上翻译就是运行循环,也就是一直在转圈圈运行着,类似于do…while()。我们思考一个问题:一个线程执行完成后就会退出,当我们启动一个iOS APP时,系统会调用main.m文件的main()函数:int main(int argc, char * argv[]) { @autoreleasepool { return UIA...
2019-04-16 21:46:22
424
原创 TextKit及应用
在iOS开发中我们常常使用UIKit的UITextView、UITextField、UILabel来显示文字。在它们的底层,是一个叫做TextKit的强大引擎。通过TextKit,我们可以通过方便的接口去修改文字的样式和排版,而不需要直接操作复杂的Core Text。1.什么是TextKit在iOS7中,苹果引入了Text Kit——一个快速而又现代化的文字排版和渲染引擎。Text Kit在...
2019-04-08 20:50:49
1296
原创 音乐(文件)断点下载
这篇文章介绍音乐等文件的下载,支持断点续传。我们需要创建两个类HYDownLoader:音乐下载的主类,可以进行新建下载、暂停下载、取消下载等。HYFileTool:文件管理类,主要为HYDownLoader服务,可以判断文件是否存在、移动文件等。一、文件管理工具类HYFileToolHYFileTool类比较简单,直接上代码,.h文件已经把方法备注得比较清楚了.h文件#import...
2019-03-20 13:12:21
752
原创 CocoaPods远程私有库
上一篇(让自己的开源项目支持CocoaPods集成)介绍了将自己开发的框架代码发布到Cocoapods,全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行安装。但有时候我们希望只有我们项目内部的人才可以集成和修改,此时就可以创建远程的私有库。通过pod search命令,Cocoapods会在官方索引库中进行搜索,通过pod repo可以查看本机添加...
2019-03-17 13:37:42
610
原创 让自己的开源项目支持CocoaPods集成
平时我们会经常用CocoaPods集成第三方库,那如何使自己的代码也可以通过CocoaPods集成呢?只需要简单几步:1.创建git仓库,把代码提交到Github或码云等2.在git仓库中创建.Podspec文件,修改里面的配置(如代码的版本、简介、git仓库地址等)3.将.Podspec提交到CocoaPods下面用一个实际例子JXCalendarTool来详细讲解一、将源代码提交到G...
2019-03-12 10:39:34
462
原创 GitHub与Git入门
一、GitHubGitHub为开发者提供Git仓库的托管服务,可以进行代码共享、团队协同开发,创建了社会化(social coding)编程的概念。二、GitHub与Git的区别开发者将源代码存入“Git”仓库,而GitHub则在网络上提供Git仓库服务。三、Git与SVN的区别相同点:都可以进行版本管理,即管理更新的历史记录,例如记录添加或更改源代码的过程,回滚到特定阶段,恢复误...
2019-03-06 16:07:54
395
原创 iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信
在iOS逆向开发时需要把下载的ipa文件安装到iOS设备上,才能进行动态分析,才能更好的玩别人的App。但是有经验的同学是知道的,下载的ipa(AppStore 和自己发布的除外) 文件是不能直接安装到自己的iPhone (未越狱)上的。为什么?因为苹果爸爸作了一个比较复杂的加密—签名。那又有同学问了什么是签名呢?为什么要签名呢?来看看这里https://www.jianshu.com/p/6fa...
2019-02-27 13:10:03
12080
7
原创 《人性的优点》笔记
1.相信自己,做一个成功的人2.《圣经》中说:“攻克己心,强如攻城”3.人最大的敌人,不是别人,正是自己4.不要为木已成舟的事情耗费太多的心血,你无法改变它5.忧虑是健康的大敌,它只会让你的生活越来越糟,与其整天郁郁寡欢,不如活在当下,过好每一天6.化妆品不只是擦抹在肌肤上的东西,更应该是擦抹在精神上的东西7.不要去关注远处模糊的事情,而是要做好手边清楚的事8.消除忧虑的最好办法,就...
2019-02-19 15:59:58
703
原创 iOS直播(五)进行推流
1.安装Ngnix服务器$ brew tap denji/nginx$ brew install nginx-full --with-upload-module2.配置RTMP在Finder中打开/usr/local/etc/nginx/nginx.conf在最后添加:rtmp { server { listen 1935; applicat...
2019-01-27 14:47:32
3749
原创 iOS直播(四)对视频进行压缩编码
1.为什么要进行编码?不经过压缩编码的原视频,所占空间大,不便于保存和网络传输,所以视频录制完后,需要先编码,再传输,解码后再播放。2.视频为什么可以被压缩?视频存在冗余信息,主要为数据冗余和视觉冗余1.数据冗余:图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。可以细分为:(1)空间冗余:同一帧图像像素之间有较强的相关性,可以进行帧内预测编码去除冗余。...
2019-01-26 09:38:45
1966
原创 iOS直播(三)GPUImage音视频采集并写入文件
上一篇介绍了用GPUImage图像处理库进行图像采集,从而避免了直接使用AVFoundation(AVKit)时繁琐的代码,同时不用熟悉OpenGL ES也可以快速地对图像进行美颜、添加滤镜等。这一篇介绍如果使用多个滤镜以及录制视频,并保存到本地沙盒中。本文默认你已经按照上一篇中介绍的集成了GPUImage库。1.声明必要的全局变量 fileprivate lazy var camera...
2019-01-22 11:12:41
1323
1
原创 iOS直播(二)GPUImage音视频采集
GPUImage是一个开源的基于GPU的第三方图像处理库,可以对图像进行美化、添加各种滤镜等。GPUImage的视频采集部分的源代码,也是和上文中的AVFoundation实现采集(https://blog.csdn.net/dolacmeng/article/details/81268622)的步骤是一致的。下面例子是进行视频采集并添加增亮滤镜:1.用cocoapods集成。 (1)用Xc...
2018-08-01 16:05:02
854
原创 iOS直播(一)AVFoundation音视频采集
一、要实现从摄像头和麦克风获取视频和音频,需要使用苹果提供的AVFoundation框架,下面是需要用到的类的说明:1.AVCaptureSessionAV Foundation捕捉栈的核心类是AVCaptureSession。一个AVCaptureSession相当于一个虚拟的“插线板”,用以连接输入和输出的资源。2.AVCaptureDeviceAVCaptureDev...
2018-07-29 10:31:48
4281
原创 iOS显示gif图片的几种方法
//1.加载Gif图片,转换成Data类型 NSString *path = [NSBundle.mainBundle pathForResource:@"demo" ofType:@"gif"]; NSData *data = [NSData dataWithContentsOfFile:path]; //2.将data数据转换成CGImageSource对象 ...
2018-07-26 17:07:14
4571
原创 UILabel显示带颜色边的文字
需求如图,UILabel要实现带红色边的文字显示。 1、新建UILabel的子类JXBorderLabel2、重写drawRect:方法#import "JXBorderLabel.h"@implementation JXBorderLabel- (void)drawRect:(CGRect)rect { //1.获取上下文 CGContextRef cont...
2018-07-25 15:55:51
919
原创 iOS端Socket(二)ProtocolBuffer使用
ProtocolBuffer使用一、环境及ProtocolBuffer的安装分别执行以下终端命令:` ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”brew install protobuf-swift brew install automak...
2018-07-20 17:59:10
944
原创 iOS端Socket连接、发送数据(一)
一、Socket的应用IM即时通讯是通过Socket的方式实现长连接,可运用于 (1)直播聊天室、礼物 (2)微信、QQ等即时聊天 (3)游戏对话、技能等二、SOCKET原理套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行。建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为Clien...
2018-07-17 18:00:12
14074
原创 《图解HTTP》笔记之TCP/IP
TCP/IP通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。把互联网相关联的协议集合起来总称为TCP/IP。而HTTP属于它内部的一个子集: TCP/IP协议族里最重要的一点就是分层,TCP/IP协议族按层次分别为以下4层:应用层、传输层、网络层和数据链路层。TCP/IP层次化的好处:比如,如果互联网只有一个协议统筹,某个地方需要改变设计时,就需要整体替换,而分层之...
2018-07-07 10:44:46
1575
原创 MLeaksFinder简单实现原理
MLeaksFinder是 iOS 平台的自动内存泄漏检测工具,下面以demo来实现检测视图控制器是否内存泄漏,实现类似的功能,简单地了解MLeaksFinder的原理。总体思路:在视图控制器弹出栈 && 视图完全消失时,监听对象是否已被正常销毁1.新建NSObject分类,提供简便的方法交换类方法:#import "NSObject+JXRuntime.h"#i...
2018-06-26 23:05:36
1824
原创 Xcode调试技巧
1、给断点设定触发条件如下代码,右键断点,选择Edit Breakpoint,设定只有i==8时,才触发断点。此时只有i==8时,才触发断点。2、断点调试时修改变量上面代码i==8成立时,触发短点,此时右击变量窗口的i值,选择Edit Value,可以修改值,如修改为20: 此时,输出b为20*20=4003、lldb监听变量值变化代码中如果要想监听变量变化,...
2018-06-24 10:40:37
1375
原创 【iOS】通过NSURLProtocol提高Web加载速度
一.项目需求项目中有个海报生成功能,使用UIWebView加载一些网页,因为海报使用率比较高,有时加载网页比较慢会影响用户体验,因此我们在APP启动后,将一些固定资源,如css、图片等,先缓存到本地。加载网页时,通过NSURLProtocol,优先使用本地的文件,以加快网页加载速度。二.Demo:百度首页logo改为本地图片下面demo实现,加载baidu首页,百度logo图片改用...
2018-06-13 16:55:49
1340
AppleWatch推送信息
2024-05-30
AppleWatch与iOS传输数据
2024-05-28
iOS显示电子数字Demo
2022-05-23
pyv8-osx.zip
2020-07-24
利用RunLoop监控卡顿
2019-04-24
OBS Mac版 V22.0.3
2019-01-27
Android AsyncTask的简单Demo
2015-12-08
iOS通讯录效果展示数据
2015-11-22
iOS地图显示、定位、大头针、气泡等简单使用
2015-11-22
【仿去哪儿】滑动隐藏导航栏
2015-06-20
iOS sqlite3的使用(増删改查)
2015-06-17
iOS UICollectionView实现瀑布流
2015-05-10
iOS用UICollectionView实现Gallery效果
2015-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人