- 博客(49)
- 资源 (1)
- 收藏
- 关注
原创 iOS多线程
线程间通讯:PerformSelector (选择器模式)NSMachPort/CFMatchPortGCD的方式多线程: 方案 简介 语言 线程生命周期管理 使用频率 ptheard 一套通用的多线程api,适用于Unix/Lin...
2019-11-18 17:15:00
221
原创 解决 rac_signalForControlEvents 调用多次问题
最近开发项目中遇到一个很奇怪的问题,在一个列表里面展示内容是对的,但是点击事件上绑定的model数据会发生变化,然后各种加断点,发现是cell上按钮绑定的rac_signalForControlEvents方法会调用多次导致的,原因在于cell复用;说到UITableView,再说一下UITableViewCell,RAC给UITableViewCell提供了一个方法:rac_prepareFor...
2018-11-26 09:38:28
1768
原创 手机格式334 自动分割
最近遇到一个产品需求,手机号码输入后,自动按照334的格式用空格分割开来,现在粘出一些相应的实现代码,仅供大家参考!.h文件(继承与UITextfield自定义一个textField)#import #define partitionStr @" "@interface CQPhoneNumTF : UITextField/** 去掉格式的电话号码 */@property
2018-01-08 09:44:37
1513
原创 post请求传xml参数(KissXML 生成xml文件)
最近开发中遇到一个需求,在post请求中,需要传递xml的参数!瞬间感觉不太好了,常规来说都是上传json的, 无奈也只能按照接口文档来做了!查阅大量资料,KissXML 这个开源框架可以完美解决该问题, 下面粘出实现代码:- (void)getSkuXmlWithVArray:(NSMutableArray *)vArray pArray:(NSMutableArray *)pArray{
2017-10-17 16:47:00
761
原创 post请求传xml参数(KissXML 生成xml文件)
最近开发中遇到一个需求,在post请求中,需要传递xml的参数!瞬间感觉不太好了,常规来说都是上传json的, 无奈也只能按照接口文档来做了!查阅大量资料,KissXML 这个开源框架可以完美解决该问题, 下面粘出实现代码:- (void)getSkuXmlWithVArray:(NSMutableArray *)vArray pArray:(NSMutableArray *)pArray{
2017-10-17 16:36:19
3461
原创 initWithCoder与initWithFrame的区别
对于标题中两个方法, 不知道大家是否跟我一样之前不是很清楚, 今天根据我查阅的资料,写一下我的简单理解!initWithCoder: 针对于.xib的控件来说的,当你嵌入一个视图对象到xib,视图加载时默认调用该方法;例如:假如创建的view来自xib,那么将会调用initWithCoder,由系统自动来调用,自己不能调用。initWithFrame: 针对于纯代码布局, 视图加载时默认调用的是该方
2017-09-15 15:57:29
323
原创 实现UITextView的placeholder及限制输入次数(干货)
众所周知, UITextfield有一个属性可以设置其placeholder, 但是UITextView却没有, 所以往往遇到要设置它的占位字符时,都要百度一番~~ ,今天又遇到这个问题, 所以自己写了一个Catgorty来实现这个需求, 分享出来希望能帮助一些伙伴! 好了, 话不多说, 上菜上菜.h文件@property (nonatomic,strong) NSString *placehol
2017-09-15 15:17:55
930
原创 设置UIButton图片和文字的位置(下上文图, 上图下文, 左图右文, 左文右图)
各位码友, 想必大家在项目中都会遇到这种场景, UI设计师设计一个按钮,非要同时有图片及文字,而且位置不一, 看到这里就有些头疼,今天来分享一个封装的api方法, 直接调用皆可简单实现其功能:首先定义几个位置类型:#pragma mark - button文字所在位置typedef NS_ENUM(NSInteger, RSButtonType) { RSButtonTypeRight =
2017-09-15 15:01:04
3245
1
原创 按钮倒计时的实现 iOS
很多项目中,都会涉及到倒计时的功能, 发送完验证码开始倒计时,针对这个我个人封装了一个简单的方法来实现此功能, 话不多说,上干货!首先我是在UIButton的一个延展类里面添加了一个方法, /** * 倒计时按钮 * * @param timeLine 倒计时总时间 */- (void)startCountDownWithTime:(NSInteger)timeLine然后在.m中实现 -
2017-09-12 10:27:49
415
原创 YYWebImage使用
YYWebImage 是一个异步图片加载框架 (YYKit 组件之一), 性能相对较高,下面来简单说一下。 **特性**:异步的图片加载,支持 HTTP 和本地文件。支持 GIF、APNG、WebP 动画(动态缓存,低内存占用)。支持逐行扫描、隔行扫描、渐进式图像加载。UIImageView、UIButton、MKAnnotationView、CALayer 的常见图片处理:模糊、圆角、
2017-09-01 17:19:40
6376
原创 Bounds 和 Frame 的区别
闲来无事, 想到之前面试时有问到bounds和frame的区别的问题,索性就写了一个简单的控件,验证一下,大家请看下图: 从打印的坐标可以看出, frame和bounds的区别就是在于x坐标及y坐标,对于一个控件来说,frame的原点是任意的(相对于父视图中的坐标位置),而bounds的原点是(0,0)点(就是view本身的坐标系统,默认永远都是0,0点,除非认为setbounds), 这就是两个
2017-09-01 16:30:29
464
原创 Model属性生成器
很多小伙伴都会遇到这样的问题,在定义model时,要自己写很多的属性,如果碰到属性特别多的时候,只能一个一个慢慢写了,很是麻烦。下面给大家一个简单的属性生成器代码:// 自动生成属性声明的代码+ (void)propertyCodeWithDictionary:(NSDictionary *)dict{NSMutableString *strM = [NSMutableString string];
2017-08-31 15:59:11
727
原创 iOS 实现系统原生分享
目前绝大多数App都会有分享功能,以便于用户推广,譬如shareSDK等第三方被广泛应用,但是却需要注册账号,集成sdk等一系列复杂操作,今天来给大家说一下系统原生的分享是怎么实现的?话不多说, 直接上代码- (void)shareAction{ NSString *textToShare = @"发给我看看 笨蛋"; NSURL *urlToShare = [NSURL URL
2017-08-31 11:22:01
2666
原创 沙盒目录解析
简介:每个ios的应用程序都会有自己的沙盒,这个沙盒就是文件目录。特点:1.每个应用程序的活动范围都限定在自己的沙盒里 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒中的内容 (iOS8已经部分开放访问extension) 3.在访问别人沙盒内的数据时需要访问权限。好处:APP之间不能相互通,唯独可以通过URL Scheme可以通信, 比较安全!沙盒本身就是一个独立,安全,封闭的空间!下面
2017-08-29 12:01:19
680
原创 解决引入cocoapods第三方库头文件不提示的问题
针对刚刚在工程里添加cocoapods,并且已经下载了几个第三方库, 但是当我们引用其头文件时,发现不会提示,会不会很鸡肋?下面说一下相应的解决办法!解决步骤如上图:点击工程的target, 选择Build Setting 菜单在搜索框中输入 search path搜索找到User Header SearchPaths 点击后面的空白部分 弹出一个操作框点击加号, 在里面加入 $(PODS
2017-08-24 11:04:38
713
原创 Masnory 使用
Masonry是一个轻量级的自动布局库,采用独特的链式语法进行代码封装,具有高可用性和阅读性等特点, 下面来说一下几个实用的例子!设置类似下图的布局约束//设置一组button的约束- (void)masonryArrayWithButton{NSArray *titleArray = @[@"按钮1", @"按钮2", @"按钮3", @"按钮4"];NSMutableArray *mArray
2017-08-22 10:32:45
428
原创 ViewController 生命周期
loadView:加载view viewDidLoad:view加载完毕 viewWillAppear:控制器的view将要显示 viewWillLayoutSubviews:控制器的view将要布局子控件 viewDidLayoutSubviews:控制器的view布局子控件完成 这期间系统可能会多次调用viewWillLayoutSubviews 、 viewDidLayoutS
2017-08-21 15:11:24
217
原创 巧妙解决navigationBarTitle不显示问题
今天突然发现,项目里的页面标题没有显示,然后就各种尝试,各种设置navigationBar颜色等,最终也没能成功,最后想了一个办法,先把这个问题解决了! 代码如下:UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 64)]; if (isValidStr(self.titleString)) {
2017-08-21 14:30:43
8673
原创 WKWebView的简单使用
大家都知道iOS 8 之后,出了一个新的WKWebView,算是UIWebVeiw的升级版,对于它大家估计都有耳闻,下面先说一下它的一些优点:性能高,稳定性好,占用的内存比较小支持JS交互支持HTML5 新特性可以添加进度条支持内建手势据说高达60fps的刷新频率(不卡)因为最近在搭建一个新项目框架,所以封装了一个webView的基类,下面把它粘出来,大家仅供参考:.h@proper
2017-08-10 15:51:26
392
原创 HTTPS的工作流程的理解
http与HTTPS的区别在于,HTTPS较HTTP 多了一层SSL的数据加密过程,已达到安全传输的问题。下面来说一下自己对HTTPS工作流程的一点理解: 1. 客户端发起HTTPS请求。 2. 服务端生成公钥和私钥(可以自己制作,也可以向专业组织申请) 3. 服务端把相应的公钥证书传送给客户端 4. 客户端去解析证书的正确性,如果证书没问题,则会生成一个随机数(密钥),用公钥对产生的随机数
2017-07-12 10:25:31
636
原创 ios 实现控件右上角添加小红点
在很多情况下,我们会遇到添加小红点的需求,比如一个有了一条新动态会显示一个小红点,起到提示用户的作用。下面我来简单说一下我的实现方法,希望可以帮到大家!首先我是写了一个UIView的延展类, 方便以后直接调用。 代码如下:UIView+HMBadge.h//创建小红点#import <UIKit/UIKit.h>@interface UIView (HMBadge)/** * 通过创建lab
2017-07-07 17:34:02
3123
原创 限制输入数字小于100000000 小数点后2位
最近项目有个需求, 对输入的数字大小及样式有一些限制,开始以为很麻烦,不过产品设计如此,只能努力去实现,下面把实现代码粘出来,供大家参考!首先必须遵循UITextField的代理方法,然后去实现代理方法- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS
2017-07-07 10:22:03
843
原创 利用runtime实现UITextField文字大小适配机型
对于runtime, 大家估计都不会太陌生,今天我就来说一个关于它的使用实例:实现UITextfield文字适配, 其核心思想就是替换系统方法。 首先我们要创建一个延展类:UITextField+HMFontFit.h实现代码在UITextField+HMFontFit.m 中// 屏幕比例#define SizeScale ((SCREEN_H == 667) ? 1 : SCREEN_H/6
2017-07-06 11:54:17
273
原创 git 常用指令
git 对于程序员朋友们来说,再熟悉不过了, git为团队协作提供了极大的便利, 今天我把自己总结的一些常用指令分享给大家,希望能对大家有所帮助!回退到某个版本 : git reset –hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96 (版本提交记录)把修改回退到远端: git push -f -u roigin master查看分支: git brabc
2017-07-05 15:35:11
208
原创 实现滑动菜单栏demo
开发过程中,很多界面都会涉及到滑动菜单的需求, 最近忙里偷闲,写了一个小demo ,仅供参考!话不多说,上代码, ~~~LXQScrollerView.h- (instancetype)initWithFrame:(CGRect)frame titleArray:(NSArray *)array;LXQScrollerView.m#define kWidth [UIScree
2017-07-05 15:22:34
569
原创 runtime 理解及实际应用
首先 , 什么是runtime?1>OC 是一个全动态语言,OC 的一切都是基于 Runtime 实现的 平时编写的OC代码, 在程序运行过程中, 其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工作者, 例如:OC :[[Person alloc] init]runtime :objc_msgSend(objc_msgSend("Person" , "alloc
2017-05-27 11:58:07
558
原创 ios 常用宏定义大全
闲来无事, 根据以往项目经验,罗列一些最常用的宏定义,以供参考!1. NSLog打印#if DEBUG#define NSLog(FORMAT, ...) fprintf(stderr, "[%s:%d行] %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8St
2017-05-26 16:46:28
331
原创 iOS 关于16进制RGB颜色设置问题
针对UI给的标注图上,色值给的都是16进制的,如#ED145B,#000000等等, 那么我们在代码中应该怎么使用这一色值呢?下面给出几种方案以供参考!1. 写一个宏定义:#define UGUColorFromRGB_0x(rgbValue) [UIColor \colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \green:
2017-02-10 15:54:49
805
原创 一般电商APP金钱格式转换
对有一个电商APP来说,显示商品价格是最寻常不过了,但是有一个问题,就是小数显示时精准度的问题,为此,苹果官方有一个API可以解决此问题。NSDecimalNumber,可以设置精准度,其有几个属性可以设置,如下:NSRoundPlain, // Round up on a tie //貌似取整 NSRoundDown, // Always down == truncate //只舍不入
2017-02-10 15:39:06
491
原创 iOS 编码注意事项及技巧
1.防止代码中的硬编码比如订单状态,订单来源类型等, 之前的代码里面全是直接写的1,2,3,4等等的状态码, 如果不看相关文档时间一长很难搞清楚状态码对应的是那种状态,类似这样的情况最好写成枚举值,在用的时候也会比较清晰,而且点进去查看 也可以看到每个状态码具体对应哪个状态2.定义接口请求API每个请求定义一个自己的API,统一管理,这样会使代码结构看起来更加的清晰,假如要更换某个接口的请求地址,就
2017-02-10 15:22:30
503
原创 SDWebImage介绍
SDWebImage相关介绍基本方法 :1.图片加载[imageView setImageWithURL:[NSURL URLWithString:url]];2.下载图片的两种方式(1) [[SDWebImageDownloader sharedDownloader]downloadImageWithURL:[NSURL URLWithString:url] o
2017-02-10 15:15:59
1459
原创 数字格式化为金额格式 (3位一个逗号隔开)
最近在写一个项目,项目中多次遇到金钱格式的问题,所以自己写了一个方法用于格式的转化- (NSString *)changeStringType:(NSInteger)price{ CGFloat changePrice = price / 100; NSMutableString *priceString = [[NSMutableString alloc] initWithFor
2016-03-24 17:44:56
2259
原创 清理缓存的几种方法
在开发移动过程中, 清理缓存是最常见的一种功能, 接下来给大家介绍几种清理缓存的方法第一种:- (void)action:(id)sender{//彻底清除缓存第一种方法UIButton * button = sender;[button setTitle:@"清理完毕" forState:UIControlStateNormal];NSArray *paths = NSSearchPat
2015-12-28 14:34:20
925
原创 清除缓存
今天给大家介绍一种简单的清除缓存的方法, 大家看过之后一定会理解这种简单的清除缓存的方法在做项目的时候, 清除缓存是一个很常用的且很有必要的东西, 之前我也从网上找了一种方法清除缓存, 但是比较麻烦, 而且不容易理解, 后来就发现了这个简单的方法, 下面就把这个方法分享给大家, 希望可以帮到大家.首先大家可以建一个按钮或者在一个tableView的cell, 点击关联到一个方法 NS
2015-10-12 10:01:54
523
原创 长按图片 把图片存到相册
小伙伴们, 这次和大家分享一个很简单的技术, 就是把图片存到相册 首先, 肯定需要一个UIImageView 用于展示图片, 接下来就要用到长按手势, 将长按手势添加到UIImageView上, 代码示例如下:UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget
2015-10-12 09:35:16
4387
原创 XML 和 JSON 解析数据
对于数据的解析方式有两种: XML 和 JSON 解析 下面来给大家简单介绍一下这两种解析方式 , 希望能帮到您!XML解析方式//这个系统的解析方式- (IBAction)xmlParserWithSAX:(UIButton *)sender { //SAX解析的方式: 逐行解析, 效率比较低, 资源消耗比较小, 如果xml格式有误, 错误之前的可以解析 //NSXMLParse
2015-09-02 20:09:30
662
原创 UI相关知识总结
UI相关知识总结>所有的视图都是矩形 //常用设置: //CGRect, CGSize, CGPoint //CGRectGetMaxX(), CGRectGetMaxY(), CGRectGetMinX(), CGRectGetMinY()//坐标系/* -------------->x轴 | | | | | V y轴 */
2015-09-02 19:51:09
544
原创 iOS开发数据库, sqlite,
常见的数据库: access, MySQL, SQLServer, Oracle移动开发常用的轻量级数据库: sqlite数据库常见的操作: 创建表, 增删改查数据
2015-09-01 21:01:03
353
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人