自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dolacmeng的专栏

求知若渴,虚心若愚

原创 【Swift】变量/常量/类型总结

1、变量(Variable)变量,可以理解为存放某一类型的值的容器,如:var count:Intvar shouldRemind:BOOLvar text:Stringvar list:[ChecklistItem]一个变量的数据类型,决定了它能存放什么类型的数据。有些变量只存放简单的值,如Int、Bool。另一些变量存放相对复杂一些的类型例如String、Array。常见的基本...

2020-04-30 14:57:22 54

原创 【一步步学小程序】3. 使用自定义组件(component)

上一节创建了一个包含多个课程数据的列表。这一节我们用自定义组件(component),来优化列表页面,即如图,我们把每个课程单元格封装为组件。使用组件的好处:自定义组件可以在不同的页面中重复使用将复杂的页面拆分成多个低耦合的模块,有助于代码维护1、首先我们在项目根目录中创建component目录,用以存放项目开发过程中创建的所有自定义组件。2、接着创建课程组件course,只需要在...

2020-04-23 17:25:51 83

原创 【一步步学小程序】2.列表展示

我们上一节已经创建了一个可以点击切换的tabbar。这节我们开始正式敲代码,在首页上展示一个可以上下滚动的课程列表:首先打开上一节的pages/home/homeMain/homeMain.wxml文件,布局相关代码都会在此文件中,小程序的布局方式类似Html标签,也有点类似Android中的xml布局文件或SwiftUI。IDE默认已经帮我们创建了一行布局代码:<text>pa...

2020-04-07 17:59:44 97

原创 【一步步学小程序】1.创建项目以及TabBar

1.创建项目如图,创建项目,输入项目名称、选择目录,AppID是唯一标识,我们可以先点如图红框内的测试号,自动生成一个AppID,然后点新建即创建完一个新项目。2.创建3个页面确保如图左上角的编译器按钮是选中状态,此时我们就可以看到项目的文件结构和编译器打开app.json文件。所有页面都需要在此json中的pages标签下进行声明。我们看到开发工具已经帮我们创建了两个页面index和...

2020-03-28 12:39:46 59

原创 Quartz2D在项目中的实际使用

还记得大学刚学iOS那会,从学校图书馆借了本iOS开发的书,有一章节介绍了Quartz2D,当时看得一头雾水,感觉这画画线,画画圆有什么用呢????️?工作一段时间后,遇到了一些需求,终于可以把咸丰年学的Quartz2D知识拿出来用一用了????。下面总结下这些年做项目用到Quartz2D的7个例子。一.单纯画个圈。有个项目要模仿呆萌价APP顶部轮播图,然后轮播图后面需要有个圆弧:一看到这需求,不简单...

2020-03-10 16:59:52 67

原创 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 54

原创 通用的排序按钮

排序按钮,使用Core Graphic绘制,可以指定颜色、大小、字体等:使用场景如下:1.使用方法下载demo代码。将HYRankView.h和HYRankView.m代码拖入工程。然后使用如下代码,即可快速添加一个名称为价格的排序按钮HYRankView *view = [HYRankView viewWithTitle:@"价格" frame:CGRectMake(0,100,8...

2020-02-06 17:20:18 341

原创 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 126

原创 【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 1011

原创 【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 538

原创 给iOS开发者的React Native入门使用教程

目录一. 原生iOS项目集成React Native二. 原生跳转RN页面三. 显示豆瓣热门电影列表四. 改为导航一. 原生iOS项目集成React Native创建一个新的文件夹,如RNProject,然后新建一个/ios的子文件夹,将已有的iOS项目全部文件复制进去。在RNProject根目录创建package.json文件,内容如下:{ "name": "RNProj...

2019-05-20 11:35:58 513

原创 一道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 152

原创 利用Injection插件加快Xcode"编译"速度

我们在调试iOS原生代码时,每次修改都需要Command+R来重新编译运行。当项目代码量很大,编译时间就会很漫长。因此对于开发中来说,如果能加快编译速度,能大大提高生产效率。如果我们能像Swift Playground、小程序或网页那样修改代码后能实时在界面上反馈出来就好了。然鹅,还真的有这样的Xcode插件,让你可以修改代码后立即在模拟器或真机上看到改变,它便是Injection for Xco...

2019-04-20 22:01:50 275

原创 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 123

原创 TextKit及应用

在iOS开发中我们常常使用UIKit的UITextView、UITextField、UILabel来显示文字。在它们的底层,是一个叫做TextKit的强大引擎。通过TextKit,我们可以通过方便的接口去修改文字的样式和排版,而不需要直接操作复杂的Core Text。1.什么是TextKit在iOS7中,苹果引入了Text Kit——一个快速而又现代化的文字排版和渲染引擎。Text Kit在...

2019-04-08 20:50:49 285

原创 音乐(文件)断点下载

这篇文章介绍音乐等文件的下载,支持断点续传。我们需要创建两个类HYDownLoader:音乐下载的主类,可以进行新建下载、暂停下载、取消下载等。HYFileTool:文件管理类,主要为HYDownLoader服务,可以判断文件是否存在、移动文件等。一、文件管理工具类HYFileToolHYFileTool类比较简单,直接上代码,.h文件已经把方法备注得比较清楚了.h文件#import...

2019-03-20 13:12:21 436

原创 CocoaPods远程私有库

上一篇(让自己的开源项目支持CocoaPods集成)介绍了将自己开发的框架代码发布到Cocoapods,全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行安装。但有时候我们希望只有我们项目内部的人才可以集成和修改,此时就可以创建远程的私有库。通过pod search命令,Cocoapods会在官方索引库中进行搜索,通过pod repo可以查看本机添加...

2019-03-17 13:37:42 230

原创 让自己的开源项目支持CocoaPods集成

平时我们会经常用CocoaPods集成第三方库,那如何使自己的代码也可以通过CocoaPods集成呢?只需要简单几步:1.创建git仓库,把代码提交到Github或码云等2.在git仓库中创建.Podspec文件,修改里面的配置(如代码的版本、简介、git仓库地址等)3.将.Podspec提交到CocoaPods下面用一个实际例子JXCalendarTool来详细讲解一、将源代码提交到G...

2019-03-12 10:39:34 185

原创 GitHub与Git入门

一、GitHubGitHub为开发者提供Git仓库的托管服务,可以进行代码共享、团队协同开发,创建了社会化(social coding)编程的概念。二、GitHub与Git的区别开发者将源代码存入“Git”仓库,而GitHub则在网络上提供Git仓库服务。三、Git与SVN的区别相同点:都可以进行版本管理,即管理更新的历史记录,例如记录添加或更改源代码的过程,回滚到特定阶段,恢复误...

2019-03-06 16:07:54 111

原创 iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信

在iOS逆向开发时需要把下载的ipa文件安装到iOS设备上,才能进行动态分析,才能更好的玩别人的App。但是有经验的同学是知道的,下载的ipa(AppStore 和自己发布的除外) 文件是不能直接安装到自己的iPhone (未越狱)上的。为什么?因为苹果爸爸作了一个比较复杂的加密—签名。那又有同学问了什么是签名呢?为什么要签名呢?来看看这里https://www.jianshu.com/p/6fa...

2019-02-27 13:10:03 1584 2

原创 《人性的优点》笔记

1.相信自己,做一个成功的人2.《圣经》中说:“攻克己心,强如攻城”3.人最大的敌人,不是别人,正是自己4.不要为木已成舟的事情耗费太多的心血,你无法改变它5.忧虑是健康的大敌,它只会让你的生活越来越糟,与其整天郁郁寡欢,不如活在当下,过好每一天6.化妆品不只是擦抹在肌肤上的东西,更应该是擦抹在精神上的东西7.不要去关注远处模糊的事情,而是要做好手边清楚的事8.消除忧虑的最好办法,就...

2019-02-19 15:59:58 269

原创 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 1913

原创 iOS直播(四)对视频进行压缩编码

1.为什么要进行编码?不经过压缩编码的原视频,所占空间大,不便于保存和网络传输,所以视频录制完后,需要先编码,再传输,解码后再播放。2.视频为什么可以被压缩?视频存在冗余信息,主要为数据冗余和视觉冗余1.数据冗余:图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。可以细分为:(1)空间冗余:同一帧图像像素之间有较强的相关性,可以进行帧内预测编码去除冗余。...

2019-01-26 09:38:45 1072

原创 iOS直播(三)GPUImage音视频采集并写入文件

上一篇介绍了用GPUImage图像处理库进行图像采集,从而避免了直接使用AVFoundation(AVKit)时繁琐的代码,同时不用熟悉OpenGL ES也可以快速地对图像进行美颜、添加滤镜等。这一篇介绍如果使用多个滤镜以及录制视频,并保存到本地沙盒中。本文默认你已经按照上一篇中介绍的集成了GPUImage库。1.声明必要的全局变量 fileprivate lazy var camera...

2019-01-22 11:12:41 737 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 456

原创 iOS直播(一)AVFoundation音视频采集

一、要实现从摄像头和麦克风获取视频和音频,需要使用苹果提供的AVFoundation框架,下面是需要用到的类的说明:1.AVCaptureSessionAV Foundation捕捉栈的核心类是AVCaptureSession。一个AVCaptureSession相当于一个虚拟的“插线板”,用以连接输入和输出的资源。2.AVCaptureDeviceAVCaptureDev...

2018-07-29 10:31:48 1484

原创 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 1998

原创 UILabel显示带颜色边的文字

需求如图,UILabel要实现带红色边的文字显示。 1、新建UILabel的子类JXBorderLabel2、重写drawRect:方法#import "JXBorderLabel.h"@implementation JXBorderLabel- (void)drawRect:(CGRect)rect { //1.获取上下文 CGContextRef cont...

2018-07-25 15:55:51 495

原创 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 483 1

原创 iOS端Socket连接、发送数据(一)

一、Socket的应用IM即时通讯是通过Socket的方式实现长连接,可运用于 (1)直播聊天室、礼物 (2)微信、QQ等即时聊天 (3)游戏对话、技能等二、SOCKET原理套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行。建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为Clien...

2018-07-17 18:00:12 6951

原创 《图解HTTP》笔记之TCP/IP

TCP/IP通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。把互联网相关联的协议集合起来总称为TCP/IP。而HTTP属于它内部的一个子集: TCP/IP协议族里最重要的一点就是分层,TCP/IP协议族按层次分别为以下4层:应用层、传输层、网络层和数据链路层。TCP/IP层次化的好处:比如,如果互联网只有一个协议统筹,某个地方需要改变设计时,就需要整体替换,而分层之...

2018-07-07 10:44:46 987

原创 MLeaksFinder简单实现原理

MLeaksFinder是 iOS 平台的自动内存泄漏检测工具,下面以demo来实现检测视图控制器是否内存泄漏,实现类似的功能,简单地了解MLeaksFinder的原理。总体思路:在视图控制器弹出栈 && 视图完全消失时,监听对象是否已被正常销毁1.新建NSObject分类,提供简便的方法交换类方法:#import "NSObject+JXRuntime.h"#i...

2018-06-26 23:05:36 1015

原创 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 812

原创 【iOS】通过NSURLProtocol提高Web加载速度

一.项目需求项目中有个海报生成功能,使用UIWebView加载一些网页,因为海报使用率比较高,有时加载网页比较慢会影响用户体验,因此我们在APP启动后,将一些固定资源,如css、图片等,先缓存到本地。加载网页时,通过NSURLProtocol,优先使用本地的文件,以加快网页加载速度。二.Demo:百度首页logo改为本地图片下面demo实现,加载baidu首页,百度logo图片改用...

2018-06-13 16:55:49 913

原创 微信小程序开发 笔记

1.[wxss]设置带透明度的rgb颜色:rgb(0,0,0,0.5);2.小程序使用类似于iOS的NSNotification:(第三方:https://github.com/icindy/WxNotificationCenter)(1)在需要收发通知的页面引入WxNotificationCenter:var WxNotificationCenter = require("../../.....

2018-05-30 22:08:19 1939

原创 iOS与JS交互的4种方法

iOS与JS交互的方法:1.拦截url(适用于UIWebView和WKWebView) 2.JavaScriptCore(只适用于UIWebView,iOS7+) 3.WKScriptMessageHandler(只适用于WKWebView,iOS8+) 4.WebViewJavascriptBridge(适用于UIWebView和WKWebView,属于第三方框架) 下面以假设的需求进行

2018-03-20 12:04:23 44595 3

原创 【iOS】中间透明的引导蒙层

需求如图口袋蜜蜂app一键海报的新手指引图,需求是遮罩层中间透明的,把底层的第一张海报显示出来,如图: 实现通过UIBezierPath和CAShapeLayer绘制一张中间为透明的黑色半透明遮罩层。步奏1、新建类PCOnePosterGuide继承自UIView 步奏2、重写drawRect:方法:- (void)drawRect:(CGRect)rect { [...

2018-02-08 07:34:51 2378

原创 Quartz 2D Programming Guide笔记

Graphics Contexts图形上下文图形上下文(graphics context)是绘制目标,可以理解为画布,包含着绘图时的参数和设备信息。类型为CGContextRef。获取graphics context后,调用Quartz 2D的函数进行绘制、旋转等操作,还可以修改如线宽、填充颜色等绘画参数。获取图形上下文当view出现在屏幕上以及视图将要更新时,系统会调用view的...

2018-02-08 07:14:41 301

原创 贝塞尔曲线动画demo(仿美人相机效果)

效果如图: 仿美人相机,手势滑动隐藏顶部view。为了方便讲解,将屏幕分为几个区域,如图:在拖动过程中: 1、拖动距离小于minMoveDistance,贝赛尔曲线发生形变 2、拖动大于minMoveDistance,整个view开始下移在松开手时: 1、拖动距离小于minMoveDistance,未发生位移,贝塞尔曲线恢复形变 2、拖动大于minMoveDistance...

2018-02-07 22:29:56 448

原创 【iOS】音频播放之AVAudioPlayer,AVPlayer,AVQueuePlayer

前言在婚语APP中,分别使用了AVAudioPlayer,AVPlayer,AVQueuePlayer来实现音频播放功能,下面以婚语的实际需求分别介绍它们的使用方法和区别。需求1 档期备忘:用户新建档期记录时,可以进行录音备忘,录音完成后可直接播放,保存档期时将录音文件上传到服务器。分析1:因为录音备忘一般时长较短文件较小,所以录音完将录音文件上传到服务器的同时,本地也保留录音文件,用户查看档期并点

2017-08-20 16:39:30 15535 1

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