
iOS
文章平均质量分 82
--风起云涌--
iOS和前端开发工程师
github: https://github.com/NieYinlong
优快云: https://blog.youkuaiyun.com/NLYNN
Code4App: http://www.code4app.com/?955038
展开
-
教你一步一步开发iOS私有SDK 到并上传到cocoapods
1、 需求我们要提供一个iOS 私有 SDK, 对方可以通过cocoapods安装, 并且只能看到头文件2、大致流程使用Xcode创建一个framework工程, 在里面编写你需要提供的功能创建podspec文件, 依赖这个framework, 然后上传到Cocoapods.3、具体流程如果我们单独创建一个framework工程, 如果有需求修改每次都要导出framwork在demo工程中调试, 这就很麻烦,所以今天创建一个framework+demo的混合工程, 在一个工程中包含frame原创 2022-03-22 17:00:42 · 4479 阅读 · 0 评论 -
iOS 手动实现KVO / iOS KVO底层原理
手动实现KVOgit demo地址首先将一下Apple KVO的底层实现吧内部实现原理KVO是基于机制实现的,运用了一个技术.就是类型混合指针机制, 将2个对象的isa指针互相调换, 就是俗称的黑魔法.当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法。派生类在被重写的setter方法内实现真正的通知机制如果原类为MyPerson,那么生成的派生类名为NSKVONotifying_MyPerson每个类对象原创 2020-07-27 09:48:57 · 916 阅读 · 1 评论 -
iOS自定义数字输入框
先看效果开发背景项目开发中经常用到数字输入框,例如输入金额(小数点之前最多几位, 保留几位小数)、年龄(开头不能为0)、纯数字、这些都需要单独在- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range代理方法中判断,比较麻烦,为了不重复造轮子, 单位封装出来了一个通用数字输入框控件。NYLNumberTextField 继承自UITextField,在本类中加入各种属性,来满足各种数原创 2020-06-19 17:15:53 · 783 阅读 · 0 评论 -
ReactiveCocoa中的订阅-发布简写代码逻辑, 帮助理解流程
官网的RACSubject // RACSubject *subject = [RACSubject subject]; [subject subscribeNext:^(id x) { NSLog(@"x1 = %@", x); }]; [subject subscribeNext:^(id x) { NSLog...原创 2020-04-11 01:31:41 · 239 阅读 · 0 评论 -
仿QQ音乐播放弹出界面, 向下滑动收回, 向上滑动弹起
仿QQ音乐播放弹出界面, 向下滑动收回, 向上滑动弹起先看效果滑动收回逻辑 1.当向下滑动速度过快会收回 2.当向上滑动速度过快会弹起 3.当滑动offstSetY > 屏幕高度一半就会收回, 4.当滑动offstSetY < 屏幕高度一半就会弹起 我们需要利用系统的类UIPanGestureRecognizer完成重要提示CGPoint speed = ...原创 2020-03-21 14:10:16 · 738 阅读 · 0 评论 -
利用线程组请求多个网络, 等多个网络请求成功再回到主线程刷新UI
利用线程组请求多个网络, 等多个网络请求成功再回到主线程刷新UI关键函数dispatch_group_create() // 创建线程组dispatch_group_enter // 进入线程组dispatch_group_leave // 离开线程组dispatch_group_notify // 异步任务全部执行完毕PS: dispatch_group_enter和dispat...原创 2020-03-20 11:05:21 · 369 阅读 · 0 评论 -
iOS蓝牙模块封装以及demo中使用
看图片git地址介绍IoT开发中需要使用到蓝牙与外设进行通讯, 我们新建一个NYLBuletoothManager类对蓝牙繁杂的操作进行封装。初始化的时候可以传入需要连接的设备名称、readUUID、writeUUID、是否自动连接参数。利用block回调蓝牙开启状态、设备是否连接、获取外设数据、写数据。使用方法导入: #import <NYLBluetooth/NYLBule...原创 2019-12-10 15:52:54 · 802 阅读 · 0 评论 -
UIAlertController分类
UIAlertController分类使用 // 显示一个按钮的alert [UIAlertController showAlertControllerTitle:@"提示" msg:@"提示内容XXXX" btnTitle:@"知道了" callBack:^{ // 点击的回调 }]; // 显示两个按钮的alert [UIAler...原创 2019-11-26 14:06:02 · 350 阅读 · 0 评论 -
XCode9下的模拟器截屏(100%大小)
选中模拟器 window-->去掉Show Device Bezels的勾选 -->Zoom 然后cmd + s 保存原创 2018-03-07 10:15:15 · 4987 阅读 · 0 评论 -
iOS电池栏设置为白色
// 电池栏白色[[UIApplicationsharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];原创 2018-01-29 14:47:41 · 791 阅读 · 0 评论 -
手把手教你使用sourceTree提交到git远程仓库
需求: 本地有一个项目想上传到git远程仓库工具: sourceTreeStep1: 首先本地创建一个空的文件夹, 空文件夹的路径写到图片2的目标路径上, 例如图片3图片1图片2图片3Step2 : 点击克隆, 让后打开如下(如果工作副本没有东西解决: xcode本身带有git。可能你的工作副本冲突原创 2018-01-15 14:11:59 · 13983 阅读 · 0 评论 -
iOS各种动画, 比较实用(扇形, 进度条, 环形进度条,贝塞尔曲线)
iOS各种动画, 比较实用(扇形, 进度条, 环形进度条,贝塞尔曲线)demo地址: https://github.com/NieYinlong/animationsDemo//// AnimationViewController.m// nyl_animation//// Created by 聂银龙 on 2017/12/18.// Copyright © 201原创 2018-01-19 23:23:36 · 5227 阅读 · 0 评论 -
其他人创建的工程在自己电脑上真机调试
年前由于各种原因换了工作, 从git上面克隆下来了项目, 真机调试但是报错, 报错如下没有对应的team, 所以给同事要了p12文件和开发者账号密码, p12有了之后,在xcode中,comm+, 把开发着帐号添加到xcode中,然后登录开发者帐号,把描述文件download下载到桌面,双击,会自动跑到工程中. 然后选择对应的team就可以了.方法2, 如果用自己的开发原创 2018-01-19 23:19:36 · 339 阅读 · 0 评论 -
ld: framework not found Parse
ld: framework not found Parseclang: error: linker command failed with exit code 1 (use -v to see invocation)手动导入的第三方库, 运行报错如上解决办法:选择工程点击 Targets点击 Build Settings搜索 for: Framework S原创 2018-01-23 17:26:57 · 892 阅读 · 0 评论 -
WKWebView与js交互
最近项目中需要用到js与原生app交互, 点击h5中的按钮, 并把h5中的参数传递到原生页面.1. 首先在app端遵守协议<WKScriptMessageHandler,WKNavigationDelegate,WKUIDelegate> WKWebViewConfiguration *config = [[WKWebViewConfiguration allo...原创 2017-04-06 09:49:48 · 2864 阅读 · 0 评论 -
解决Xcode9 app 图标不显示 iOS11app图标不显示
升级到iOS11系统下自己的项目桌面app图标不见了, 自己在Xcode9下新建一个工程看一下, 设置图标是显示的, 但是假如CocoaPod就不显示了. 多方查询发现图标不显示主要是cocoaPod出现了问题, 需要在podfile文件加入以下脚本 [标红的地方]1.加入脚本platform :ios, '8.0'target ‘lqz’ do pod原创 2017-09-21 09:33:29 · 7665 阅读 · 1 评论 -
把之前Xcode8建的类, 拉倒Xcode9就不能用了, 除非你用Xcode9建立一个一模一样的类就可以用了
把之前Xcode8建的类, 拉到Xcode9就不能用了, 报错找不到方法,解决方案:把文件add file到工程即可原创 2017-10-05 09:49:17 · 1033 阅读 · 0 评论 -
apple match-o linker error
Xcode编译出错: apple match-o linker error, (模拟器出错, 真机正常)用终端cd 到工程路径, 执行命令 pod install, 重新打开即可原创 2017-09-18 09:50:06 · 682 阅读 · 0 评论 -
iOS对sqlite3进行封装
sqlite3是轻量级的数据库, 多用于移动端, 由于sqlite3多是C语言函数, 操作起来比较麻烦, 下面进行封装demo地址:首先创建数据库单例类 DataBaseHandle//// DataBaseHandle.m// DataBaseDemo//// Created by 聂银龙 on 2017/7/28.// Copyright © 2017年 niey原创 2017-07-28 21:33:19 · 701 阅读 · 0 评论 -
iOS已知时间加N天(减N天)后的日期
iOS已知时间加N天(减N天)后的日期- (void)addDay { NSInteger distance = 3; // 加的天数 NSDate *nowDate = [NSDate date]; NSDate *otherDate; NSTimeInterval oneDay = 24 * 60 * 60 * 1;原创 2017-07-19 19:57:50 · 1989 阅读 · 0 评论 -
iOS把UIImage对象保存到本地沙盒
1. 保存- (void)saveImage:(UIImage *)image { NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *filePath = [[paths objectAtIndex:原创 2017-07-20 17:01:00 · 17034 阅读 · 0 评论 -
mac显示隐藏文件
mac显示隐藏文件在终端输入//显示隐藏文件defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder //不显示隐藏文件defaults write com.apple.finder AppleShowAllFiles No && killa原创 2017-06-20 11:17:38 · 352 阅读 · 0 评论 -
cell高度自适应实现的最简单方式
转载自: https://blog.youkuaiyun.com/studying_ios/article/details/54094305曾经为了实现cell的高度自适应,不知道吃了多少苦。那个时候,是在我的数据模型model中添加一个height属性,实现它的get方法,在get方法中计算需要多行显示文字的高度,然后再加上其他乱七八糟的高度并返回,然后在tableview的 - (CGFloat)tabl...转载 2018-03-28 09:24:02 · 711 阅读 · 0 评论 -
iOS设置导航栏右侧图片为真实颜色, 而非填充颜色
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"icon_"] imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)] style:(UIBarButtonItemStyleP...原创 2018-04-11 10:27:24 · 1501 阅读 · 0 评论 -
设置输入框占位符颜色
[_textField setValue:Color(@"d2d3d4") forKeyPath:@"_placeholderLabel.textColor"];原创 2018-03-29 11:07:51 · 1481 阅读 · 0 评论 -
iOS GCD的一些用法
iOS GCD的一些用法多线程GCD是纯C的API, 使用起来更高效本文主要讲了1 GCD异步操作2 GCD经典死锁3 GCD线程组4 GCD信号量1 异步并发- (void)diapatchAsyncWithConcurrent { dispatch_queue_t queue = dispatch_queue_create("com.nyl", DISPATCH_QUE...原创 2019-08-12 10:30:05 · 277 阅读 · 0 评论 -
iOS UIView一行代码添加手势
平常我们给UIView添加手势都要 addGestureRecognizer, 然后实现方法taget action方法, 代码比较分散, 现在我们可以制作一个UIView分类, 利用block只要一行代码即可实现.ps: 分类里面利用runtime的属性关联, 来完成属性的使用.如何使用导入#import “UIView+Tap.h” [self.view nyl_addTapGes:...原创 2019-08-23 23:38:56 · 2393 阅读 · 0 评论 -
iOS针对SRWebSocket的再次封装,已制作cocoapod库
本库是对SRWebSocket的再次封装, 经过一番折腾, 已经制作了cocoapod库, 可以直接执行 pod install pod 'NYLSRWebSocket', '~> 0.0.1'封装包括断线重连: 断开后在网络可用的情况下重连5次, 5次失败利用定时器继续重连;具体使用连接 // 连接 [[NYLWebSocketManager shareManager...原创 2019-08-20 11:10:34 · 956 阅读 · 2 评论 -
iOS消息转发,拯救你的app,防止崩溃
iOS消息转发在OC中是通过 [person eat]调用方法的。 他的底层实现是objc_msgSend(void /* id , self, SEL op, ... */ )。objc_msgSend需要动态查找自己要调用哪个方法, 会根据@selector的名字动态查找对应的方法。我们利用[person eat]进行举例, 列出方法查找的过程在person对象的缓存方法列表中(cl...原创 2019-08-09 15:05:01 · 685 阅读 · 0 评论 -
iOS消息转发 -- 解决NSNull取值崩溃
消息转发 – 解决NSNull取值崩溃运用场景如果数据接口返回的有data中的age是null, 此时取值data[@"age”]会崩溃; 崩溃信息显示:-[NSNull objectForKeyedSubscript:]: unrecognized selector sent to instance 0x104d0bea8;利用if(data[@"age”]){ 取值 }, 也可以避免崩溃...原创 2019-08-08 11:32:54 · 1877 阅读 · 0 评论 -
iOS可以长按复制的label
可以长按复制的label, 带有高亮显示新建NYLCopyLabel继承自UILabel, 然后添加长按手势, 把text赋值给粘贴板, 当长按的label时候, label加背景显示高亮状态, 当复制按钮消失, 高亮取消. (利用UIMenuControllerWillHideMenuNotification的通知监听复制按钮消失)使用方法NYLCopyLabel *label = [N...原创 2019-07-17 14:14:47 · 810 阅读 · 0 评论 -
iOS输入框搜索节流&输入框输入拼音的问题 (防抖)
1. 输入框连续输入不调用接口, 停止输入再调用接口, 设置节流阀2. 输入框输入拼音时, 当点击确定汉字再调用搜索接口完整代码//// ViewController.m// 输入框节流//// Created by nyl on 2019/7/1.// Copyright © 2019 nieyinlong. All rights reserved.//#impor...原创 2019-07-01 11:18:54 · 1315 阅读 · 0 评论 -
iOS webSocket 长链接的实践
iOS webSocket 使用SocketRocket第三方引入pod 'SocketRocket', '~> 0.5.1'封装WebSocketManagerWebSocketManager.h#import <Foundation/Foundation.h>#import <SocketRocket/SRWebSocket.h>@interfac...原创 2019-03-25 12:03:27 · 2530 阅读 · 5 评论 -
iOS自定义UITabBar中间按钮
iOS自定义UITabBar中间按钮自定义YLTbaBar继承自UITabBargit地址: https://github.com/NieYinlong/DIYTabBarCenterBtn YLTbaBar.h//// YLTabBar.h// 自定义tabbar//// Created by nyl on 2018/10/15.// Copyr...原创 2018-10-30 10:44:15 · 1269 阅读 · 0 评论 -
iOS 字符串的的compare方法
比较app版本号, 决定是否更新后台存储的版本号1.0.4当前的版本号 1.0.1- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask; NSString *serverVersion = @"1.0.4"; // 后台存储的版本号 NSString...原创 2018-10-25 11:49:30 · 622 阅读 · 0 评论 -
masonry布局后使用UIView动画
masonry布局后使用UIView动画- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; _testView = [[UIView alloc] init]; _testView.backgroundCol...原创 2018-07-28 10:44:31 · 851 阅读 · 0 评论 -
iOS, for in数组时, 同时对其进行删减操作崩溃
for in数组时, 同时对其进行删减操作, 崩溃崩溃代码 // forin 里面删减数组元素, 必须加break for (NSString *str in arr) { if ([str isEqualToString:@"002"]) { [arr addObject:@"004"];// 不加break会崩溃 ...原创 2018-07-28 10:31:01 · 1188 阅读 · 0 评论 -
圆盘刻度尺(iOS圆环刻度尺)
圆盘刻度尺, 废话少说, 先看效果demo地址:https://github.com/NieYinlong/RoundRotatePanel原创 2018-05-11 14:01:50 · 4156 阅读 · 0 评论 -
iOS h5直接调支付宝支付
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{ NSString *requestU...原创 2018-05-02 10:34:17 · 3106 阅读 · 0 评论 -
iOS悬停
滚动到顶部 红色View卡主//// ViewController.m// XuanTing_demo//// Created by YinlongNie on 17/1/11.// Copyright © 2017年 Jiuzhekan. All rights reserved.//#import "ViewController.h"#define kScreenW原创 2017-01-11 15:55:40 · 1101 阅读 · 0 评论