Cocoapods-创建第三方框架
将框架中的主要文件放入到一个指定文件夹中,比如叫Classes或者Lib都可以
+
一、上传项目到github将框架中的主要文件放入到一个指定文件夹中,比如叫Classes或者Lib都可以
打开终端,cd到框架目录
1cd /Users/lxf/xxxx/LXFPhotoHelper
初始化仓库
1git init
将当前目录添加到缓存区
1git add .
提交到本地仓库
1git commit -m '描述'
添加远程仓库地址
1git remote add origin https://github.com/LinXunFeng/xxx.git
提交到远程仓库
1git push origin master
如果出现如下提示1fatal: unable to access 'https://github.com/xxx/xxx.git/': The requested URL return ...
Python-虚拟环境
平时在开发时我们都会先安装一些python需要的包,每次安装都会有一个版本,如果不同项目需要不同版本的包时就会出现不兼容的情况。应对这种情况我们就可以搭建多个虚拟环境来应对不同的环境需求,在虚拟环境中搭建一个Python项目运行所需要的那些包,将来根据运行的项目来切换不同环境即可
+
平时在开发时我们都会先安装一些python需要的包,每次安装都会有一个版本,如果不同项目需要不同版本的包时就会出现不兼容的情况。应对这种情况我们就可以搭建多个虚拟环境来应对不同的环境需求,在虚拟环境中搭建一个Python项目运行所需要的那些包,将来根据运行的项目来切换不同环境即可
我们可以在当前用户的家目录中找到【.virtualenvs】文件夹,查看当前所有的虚拟环境
创建虚拟环境
创建:mkvirtualenv [虚拟环境名称]
1mkvirtualenv lxfenv1
注:创建的过程需要联网
1Installing setuptools, pkg_resources, pip, wheel...done.
刚刚安装时提示安装的这些东西就存放在你创建好的虚拟环境下的【lib/ ...
RxSwift + MJRefresh 打造自动处理刷新控件状态
MVVM的模式中,多出了ViewModel这个角色,将逻辑处理、网络请求等繁杂操作中ViewController中抽离出来,ViewController得以瘦身。结合RxSwift架构,我们一般就会在ViewModel中定义一个input收集繁杂操作所需的信息,通过一个transform方法将input作为参数传入,进而得到一个output供controller使用。
在使用RxSwift开发时会大量的使用到这种形式,其中就包括我们的网络请求。
+
本文是基于 iOS-RxSwift项目实战记录 所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下 : )
前言MVVM的模式中,多出了ViewModel这个角色,将逻辑处理、网络请求等繁杂操作中ViewController中抽离出来,ViewController得以瘦身。结合RxSwift架构,我们一般就会在ViewModel中定义一个input收集繁杂操作所需的信息,通过一个transform方法将input作为参数传入,进而得到一个output供controller使用。
在使用RxSwift开发时会 ...
iOS - 视频采集详解
苹果官方文档-AVFoundation
为了管理从相机或者麦克风等这样的设备捕获到的信息,我们需要输入对象(input)和输出对象(output),并且使用一个会话(AVCaptureSession)来管理 input 和 output 之前的数据流
+
苹果官方文档-AVFoundation
为了管理从相机或者麦克风等这样的设备捕获到的信息,我们需要输入对象(input)和输出对象(output),并且使用一个会话(AVCaptureSession)来管理 input 和 output 之前的数据流:
类名
简介
AVCaptureDevice
输入设备,例如 摄像头 麦克风
AVCaptureInput
输入端口 [使用其子类]
AVCaptureOutput
设备输出 [使用其子类],输出视频文件或者静态图像
AVCaptureSession
管理输入到输出的数据流
AVCaptureVideoPreviewLayer
展示采集 预览View
如图,通过单个 session,也可以管理多个 input 和 output 对象之间的数据 ...
iOS - 采集音视频及写入文件
音视频采集包括两部分:视频采集和音频采集。在iOS中可以同步采集视频与音频,通过系统框架AVFoundation,可以帮助我们采集音频与视频,对于视频还可以进行切换前后摄像头,最终我们将录制好的视频写入沙盒中
+
音视频采集包括两部分:视频采集和音频采集。在iOS中可以同步采集视频与音频,通过系统框架AVFoundation,可以帮助我们采集音频与视频,对于视频还可以进行切换前后摄像头,最终我们将录制好的视频写入沙盒中
音视频数据的采集与展示一、初始化视频的输入与输出12345678// 懒加载一个session,所有的操作都需要session来执行fileprivate lazy var session: AVCaptureSession = AVCaptureSession()// 保存视频输出fileprivate var videoOutput: AVCaptureVideoDataOutput?// 保存视频输入fileprivate var videoInput: AVCaptureDeviceInput?// 保存预览图层fileprivate var ...
iOS - LXFDrawBoard 多功能小画板
将LXFDrawBoard拖入项目中,导入头文件LXFDrawBoard.h,需要什么笔刷可以在Brush文件夹中找到即可使用,具体使用方法可以参考Demo+
LXFDrawBoard多功能小画板 GitHub: Demo
Usage
将LXFDrawBoard拖入项目中,导入头文件LXFDrawBoard.h,需要什么笔刷可以在Brush文件夹中找到即可使用,具体使用方法可以参考Demo
LXFDrawBoardDelegate
返回需要添加的描述
1- (NSString *)LXFDrawBoard:(LXFDrawBoard *)drawBoard textForDescLabel:(UILabel *)descLabel;
当添加或修改描述时调用
1- (void)LXFDrawBoard:(LXFDrawBoard *)drawBoard clickDescLabel:(UILabel *)descLabel;
笔刷2017–09-25 更新橡皮擦 LXFEraserBrush
铅笔 LXFPencilBrush
箭头 LXFArrowBrush
直线 LXFL ...
iOS-RxSwift项目实战记录
最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。),而恰巧RxSwift已经出来有一些时间了,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~
+
最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。),而恰巧RxSwift已经出来有一些时间了,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~
结构1234567891011121314151617.├── Controller│ └── LXFViewController.swift // 主视图控制器├── Extension│ └── Response+ObjectMapper.swift // Response分类,Moya请求完进行Json转模型或模型数组├── Model│ └── LX ...
Ubuntu安装nginx来搭建推流服务器
如果安装命令回车之后出现如下信息,请参考【Ubuntu “无法获得锁”解决方案】解决,但是我亲测对我没用,直接重启搞定
+
安装nginx安装两个依赖库12sudo apt-get install autoconf automakesudo apt-get install libpcre3 libpcre3-dev安装zlib库12sudo apt-get install opensslsudo apt-get install libssl-dev如果安装命令回车之后出现如下信息,请参考【Ubuntu “无法获得锁”解决方案】解决,但是我亲测对我没用,直接重启搞定12E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
进入家目录,新建一个文件夹,这里以lxf为例12cd ~mkdir lxf
下载所需源码1234// 下载nginx-rtmp源码wget https://g ...
iOS-给高仿微信添加直播聊天功能
抽空给之前做的开源项目【高仿微信】添加直播功能,由于时间有限,做得不是很完美,有空再去完善吧,能用就好~~
+
抽空给之前做的开源项目【高仿微信】添加直播功能,由于时间有限,做得不是很完美,有空再去完善吧,能用就好~~
在此提供存放于百度云的完整项目【高仿微信】- 百度云希望各位能在我的GitHub上献出一个宝贵的Star 【高仿微信】- GitHub谢谢
注意:直播功能的使用(对方需要先进入到对应的聊天界面)
两个测试账号: lxf lqr 密码都是123456
推流首先第一件事当然就是搭建一个推流服务器,这里请跳转参考我之前写好的文章吧【Ubuntu安装nginx来搭建推流服务器】,这里我的服务器的ip地址是:192.168.123.191
APP上推流我使用的是第三方的库 LFLiveKit,这个第三方库已经帮我们处理了很多事情,而且还包括美颜~~。当然,有时间我们还是要去了解一下底层的东西,这里就先不赘述,过几天抽空再做总结。
关键代码如下
123456789// 初始化配置let audioConfiguration = LFLiveAudi ...
iOS-揭露Block的内部实现原理
想必大家对block都很熟悉了,虽然都会用,但是你真的知道它的原理吗?比如为什么要加上__block,这个修饰符到底有什么用?不加会有什么后果?block又是如何实现的等等。。。该篇文章就为大家揭晓关于Block的实现原理~
+
想必大家对block都很熟悉了,虽然都会用,但是你真的知道它的原理吗?比如为什么要加上__block,这个修饰符到底有什么用?不加会有什么后果?block又是如何实现的等等。。。该篇文章就为大家揭晓关于Block的实现原理~
抛砖引玉先给出问题,大家思考下结果吧,如果分别调用以下两个方法,结果如何?123456789void blockFunc1(){ int num = 100; void (^block)() = ^{ NSLog(@"num equal %d", num); }; num = 200; block();}123456789void blockFunc2(){ __block int num = 100; void ( ...