iOS
qq_28009573
这个作者很懒,什么都没留下…
展开
-
iOS多线程
线程间通讯:PerformSelector (选择器模式)NSMachPort/CFMatchPortGCD的方式多线程: 方案 简介 语言 线程生命周期管理 使用频率 ptheard 一套通用的多线程api,适用于Unix/Lin...原创 2019-11-18 17:15:00 · 158 阅读 · 0 评论 -
实现UITextView的placeholder及限制输入次数(干货)
众所周知, UITextfield有一个属性可以设置其placeholder, 但是UITextView却没有, 所以往往遇到要设置它的占位字符时,都要百度一番~~ ,今天又遇到这个问题, 所以自己写了一个Catgorty来实现这个需求, 分享出来希望能帮助一些伙伴! 好了, 话不多说, 上菜上菜.h文件@property (nonatomic,strong) NSString *placehol原创 2017-09-15 15:17:55 · 874 阅读 · 0 评论 -
解决引入cocoapods第三方库头文件不提示的问题
针对刚刚在工程里添加cocoapods,并且已经下载了几个第三方库, 但是当我们引用其头文件时,发现不会提示,会不会很鸡肋?下面说一下相应的解决办法!解决步骤如上图:点击工程的target, 选择Build Setting 菜单在搜索框中输入 search path搜索找到User Header SearchPaths 点击后面的空白部分 弹出一个操作框点击加号, 在里面加入 $(PODS原创 2017-08-24 11:04:38 · 650 阅读 · 0 评论 -
YYWebImage使用
YYWebImage 是一个异步图片加载框架 (YYKit 组件之一), 性能相对较高,下面来简单说一下。 **特性**:异步的图片加载,支持 HTTP 和本地文件。支持 GIF、APNG、WebP 动画(动态缓存,低内存占用)。支持逐行扫描、隔行扫描、渐进式图像加载。UIImageView、UIButton、MKAnnotationView、CALayer 的常见图片处理:模糊、圆角、原创 2017-09-01 17:19:40 · 6294 阅读 · 0 评论 -
Masnory 使用
Masonry是一个轻量级的自动布局库,采用独特的链式语法进行代码封装,具有高可用性和阅读性等特点, 下面来说一下几个实用的例子!设置类似下图的布局约束//设置一组button的约束- (void)masonryArrayWithButton{NSArray *titleArray = @[@"按钮1", @"按钮2", @"按钮3", @"按钮4"];NSMutableArray *mArray原创 2017-08-22 10:32:45 · 373 阅读 · 0 评论 -
ViewController 生命周期
loadView:加载view viewDidLoad:view加载完毕 viewWillAppear:控制器的view将要显示 viewWillLayoutSubviews:控制器的view将要布局子控件 viewDidLayoutSubviews:控制器的view布局子控件完成 这期间系统可能会多次调用viewWillLayoutSubviews 、 viewDidLayoutS原创 2017-08-21 15:11:24 · 164 阅读 · 0 评论 -
巧妙解决navigationBarTitle不显示问题
今天突然发现,项目里的页面标题没有显示,然后就各种尝试,各种设置navigationBar颜色等,最终也没能成功,最后想了一个办法,先把这个问题解决了! 代码如下:UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 64)]; if (isValidStr(self.titleString)) {原创 2017-08-21 14:30:43 · 8467 阅读 · 0 评论 -
WKWebView的简单使用
大家都知道iOS 8 之后,出了一个新的WKWebView,算是UIWebVeiw的升级版,对于它大家估计都有耳闻,下面先说一下它的一些优点:性能高,稳定性好,占用的内存比较小支持JS交互支持HTML5 新特性可以添加进度条支持内建手势据说高达60fps的刷新频率(不卡)因为最近在搭建一个新项目框架,所以封装了一个webView的基类,下面把它粘出来,大家仅供参考:.h@proper原创 2017-08-10 15:51:26 · 315 阅读 · 0 评论 -
ios 实现控件右上角添加小红点
在很多情况下,我们会遇到添加小红点的需求,比如一个有了一条新动态会显示一个小红点,起到提示用户的作用。下面我来简单说一下我的实现方法,希望可以帮到大家!首先我是写了一个UIView的延展类, 方便以后直接调用。 代码如下:UIView+HMBadge.h//创建小红点#import <UIKit/UIKit.h>@interface UIView (HMBadge)/** * 通过创建lab原创 2017-07-07 17:34:02 · 3024 阅读 · 0 评论 -
限制输入数字小于100000000 小数点后2位
最近项目有个需求, 对输入的数字大小及样式有一些限制,开始以为很麻烦,不过产品设计如此,只能努力去实现,下面把实现代码粘出来,供大家参考!首先必须遵循UITextField的代理方法,然后去实现代理方法- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS原创 2017-07-07 10:22:03 · 770 阅读 · 0 评论 -
UI相关知识总结
UI相关知识总结>所有的视图都是矩形 //常用设置: //CGRect, CGSize, CGPoint //CGRectGetMaxX(), CGRectGetMaxY(), CGRectGetMinX(), CGRectGetMinY()//坐标系/* -------------->x轴 | | | | | V y轴 */原创 2015-09-02 19:51:09 · 489 阅读 · 0 评论 -
沙盒目录解析
简介:每个ios的应用程序都会有自己的沙盒,这个沙盒就是文件目录。特点:1.每个应用程序的活动范围都限定在自己的沙盒里 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒中的内容 (iOS8已经部分开放访问extension) 3.在访问别人沙盒内的数据时需要访问权限。好处:APP之间不能相互通,唯独可以通过URL Scheme可以通信, 比较安全!沙盒本身就是一个独立,安全,封闭的空间!下面原创 2017-08-29 12:01:19 · 490 阅读 · 0 评论 -
设置UIButton图片和文字的位置(下上文图, 上图下文, 左图右文, 左文右图)
各位码友, 想必大家在项目中都会遇到这种场景, UI设计师设计一个按钮,非要同时有图片及文字,而且位置不一, 看到这里就有些头疼,今天来分享一个封装的api方法, 直接调用皆可简单实现其功能:首先定义几个位置类型:#pragma mark - button文字所在位置typedef NS_ENUM(NSInteger, RSButtonType) { RSButtonTypeRight =原创 2017-09-15 15:01:04 · 3093 阅读 · 1 评论 -
解决 rac_signalForControlEvents 调用多次问题
最近开发项目中遇到一个很奇怪的问题,在一个列表里面展示内容是对的,但是点击事件上绑定的model数据会发生变化,然后各种加断点,发现是cell上按钮绑定的rac_signalForControlEvents方法会调用多次导致的,原因在于cell复用;说到UITableView,再说一下UITableViewCell,RAC给UITableViewCell提供了一个方法:rac_prepareFor...原创 2018-11-26 09:38:28 · 1700 阅读 · 0 评论 -
手机格式334 自动分割
最近遇到一个产品需求,手机号码输入后,自动按照334的格式用空格分割开来,现在粘出一些相应的实现代码,仅供大家参考!.h文件(继承与UITextfield自定义一个textField)#import #define partitionStr @" "@interface CQPhoneNumTF : UITextField/** 去掉格式的电话号码 */@property原创 2018-01-08 09:44:37 · 1407 阅读 · 0 评论 -
post请求传xml参数(KissXML 生成xml文件)
最近开发中遇到一个需求,在post请求中,需要传递xml的参数!瞬间感觉不太好了,常规来说都是上传json的, 无奈也只能按照接口文档来做了!查阅大量资料,KissXML 这个开源框架可以完美解决该问题, 下面粘出实现代码:- (void)getSkuXmlWithVArray:(NSMutableArray *)vArray pArray:(NSMutableArray *)pArray{原创 2017-10-17 16:47:00 · 716 阅读 · 0 评论 -
post请求传xml参数(KissXML 生成xml文件)
最近开发中遇到一个需求,在post请求中,需要传递xml的参数!瞬间感觉不太好了,常规来说都是上传json的, 无奈也只能按照接口文档来做了!查阅大量资料,KissXML 这个开源框架可以完美解决该问题, 下面粘出实现代码:- (void)getSkuXmlWithVArray:(NSMutableArray *)vArray pArray:(NSMutableArray *)pArray{原创 2017-10-17 16:36:19 · 3384 阅读 · 0 评论 -
按钮倒计时的实现 iOS
很多项目中,都会涉及到倒计时的功能, 发送完验证码开始倒计时,针对这个我个人封装了一个简单的方法来实现此功能, 话不多说,上干货!首先我是在UIButton的一个延展类里面添加了一个方法, /** * 倒计时按钮 * * @param timeLine 倒计时总时间 */- (void)startCountDownWithTime:(NSInteger)timeLine然后在.m中实现 -原创 2017-09-12 10:27:49 · 356 阅读 · 0 评论 -
Bounds 和 Frame 的区别
闲来无事, 想到之前面试时有问到bounds和frame的区别的问题,索性就写了一个简单的控件,验证一下,大家请看下图: 从打印的坐标可以看出, frame和bounds的区别就是在于x坐标及y坐标,对于一个控件来说,frame的原点是任意的(相对于父视图中的坐标位置),而bounds的原点是(0,0)点(就是view本身的坐标系统,默认永远都是0,0点,除非认为setbounds), 这就是两个原创 2017-09-01 16:30:29 · 393 阅读 · 0 评论 -
Model属性生成器
很多小伙伴都会遇到这样的问题,在定义model时,要自己写很多的属性,如果碰到属性特别多的时候,只能一个一个慢慢写了,很是麻烦。下面给大家一个简单的属性生成器代码:// 自动生成属性声明的代码+ (void)propertyCodeWithDictionary:(NSDictionary *)dict{NSMutableString *strM = [NSMutableString string];原创 2017-08-31 15:59:11 · 655 阅读 · 0 评论 -
iOS 实现系统原生分享
目前绝大多数App都会有分享功能,以便于用户推广,譬如shareSDK等第三方被广泛应用,但是却需要注册账号,集成sdk等一系列复杂操作,今天来给大家说一下系统原生的分享是怎么实现的?话不多说, 直接上代码- (void)shareAction{ NSString *textToShare = @"发给我看看 笨蛋"; NSURL *urlToShare = [NSURL URL原创 2017-08-31 11:22:01 · 2562 阅读 · 0 评论 -
initWithCoder与initWithFrame的区别
对于标题中两个方法, 不知道大家是否跟我一样之前不是很清楚, 今天根据我查阅的资料,写一下我的简单理解!initWithCoder: 针对于.xib的控件来说的,当你嵌入一个视图对象到xib,视图加载时默认调用该方法;例如:假如创建的view来自xib,那么将会调用initWithCoder,由系统自动来调用,自己不能调用。initWithFrame: 针对于纯代码布局, 视图加载时默认调用的是该方原创 2017-09-15 15:57:29 · 270 阅读 · 0 评论 -
利用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 · 226 阅读 · 0 评论 -
git 常用指令
git 对于程序员朋友们来说,再熟悉不过了, git为团队协作提供了极大的便利, 今天我把自己总结的一些常用指令分享给大家,希望能对大家有所帮助!回退到某个版本 : git reset –hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96 (版本提交记录)把修改回退到远端: git push -f -u roigin master查看分支: git brabc原创 2017-07-05 15:35:11 · 177 阅读 · 0 评论 -
XML 和 JSON 解析数据
对于数据的解析方式有两种: XML 和 JSON 解析 下面来给大家简单介绍一下这两种解析方式 , 希望能帮到您!XML解析方式//这个系统的解析方式- (IBAction)xmlParserWithSAX:(UIButton *)sender { //SAX解析的方式: 逐行解析, 效率比较低, 资源消耗比较小, 如果xml格式有误, 错误之前的可以解析 //NSXMLParse原创 2015-09-02 20:09:30 · 625 阅读 · 0 评论 -
UI中常用的4种传值
常见的四种传值方式: 单例, 属性, block, delegate原创 2015-09-01 22:07:10 · 333 阅读 · 0 评论 -
多线程相关
程序: 可执行文件进程: 一个正在运行的可执行文件, 每个进程都有独立的虚拟内存空间和系统资源, 包含至少一个主线程和任意数量的辅助线程, 而且, 当一个进程的主线程退出时, 这个进程就结束了线程: 一个独立代码执行路径, 由线程做资源的分配和调度iOS创建线程的方式:---------------------------------------------------原创 2015-09-01 19:32:32 · 272 阅读 · 0 评论 -
iOS开发数据库, sqlite,
常见的数据库: access, MySQL, SQLServer, Oracle移动开发常用的轻量级数据库: sqlite数据库常见的操作: 创建表, 增删改查数据原创 2015-09-01 21:01:03 · 322 阅读 · 0 评论 -
OC中的Block(块语法)相关知识
Block的数据类型格式:返回值类型: (^)(参数类型1参数名1, 参数类型2 参数名2, ...)注: 1.没有参数,括号不能省略 2.参数名可以省略, 特殊情况下,为了方便使用, 不省略block赋值(实现) //格式: // ^(数据类型1参数名, 数据类型2 参数名2原创 2015-07-24 20:04:27 · 442 阅读 · 0 评论 -
OC 实例变量三种可见度相关
在OC中, 实例变量可见度, 可分为3种: public, protected,private下面来给大家详细介绍一下这三种可见度:1. public意指: 公开的, 公共的 , 可以在内部和外部访问1>外部访问: 使用指向操作符(->),格式: 对象->实例变量名2>内部访问: 通过实例变量名去访问注: 封装是要把实现部分隐藏起来,只保原创 2015-07-20 21:40:43 · 357 阅读 · 0 评论 -
Fraction类(分数)实现分数的加减乘除, ⽐比较⼤大⼩小、约分等⽅方法
Fraction.h:#import @interface Fraction : NSObject//声明两个实例变量@property NSInteger upNumber, downNumber;//自定义初始化方法- (id)initWithUpNumber:(NSInteger)upNumber downNumber:(NSInteger)downN原创 2015-07-31 21:06:17 · 2722 阅读 · 0 评论 -
UI, 基础控件,ToolBar,...
3.1 Button控件3.2 开关控件3.3 滑块控件3.4 工具栏3.5 WebView原创 2015-08-24 14:02:48 · 319 阅读 · 0 评论 -
UI, 关灯游戏的实现
游戏规则:UI小游戏首先随机为每个按钮生成不同的状态(开灯或关灯), 然后点击按钮, 进行关灯; 其四周的灯, 如果是亮的, 那么这个灯将会关掉, 如果是关的, 那么该灯将会被打开, 直到所有的灯都被灭掉为止#import "FootViewController.h"//定义宏,表示按钮的边长#define kSize 50@interface Foo原创 2015-08-08 19:58:17 · 1160 阅读 · 0 评论 -
长按图片 把图片存到相册
小伙伴们, 这次和大家分享一个很简单的技术, 就是把图片存到相册 首先, 肯定需要一个UIImageView 用于展示图片, 接下来就要用到长按手势, 将长按手势添加到UIImageView上, 代码示例如下:UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget原创 2015-10-12 09:35:16 · 4246 阅读 · 0 评论 -
清理缓存的几种方法
在开发移动过程中, 清理缓存是最常见的一种功能, 接下来给大家介绍几种清理缓存的方法第一种:- (void)action:(id)sender{//彻底清除缓存第一种方法UIButton * button = sender;[button setTitle:@"清理完毕" forState:UIControlStateNormal];NSArray *paths = NSSearchPat原创 2015-12-28 14:34:20 · 865 阅读 · 0 评论 -
多线程大全
PthreadsNSThreadGCDNSOperation & NSOperationQueue转载 2016-03-10 14:39:19 · 292 阅读 · 0 评论 -
实现滑动菜单栏demo
开发过程中,很多界面都会涉及到滑动菜单的需求, 最近忙里偷闲,写了一个小demo ,仅供参考!话不多说,上代码, ~~~LXQScrollerView.h- (instancetype)initWithFrame:(CGRect)frame titleArray:(NSArray *)array;LXQScrollerView.m#define kWidth [UIScree原创 2017-07-05 15:22:34 · 532 阅读 · 0 评论 -
HTTPS的工作流程的理解
http与HTTPS的区别在于,HTTPS较HTTP 多了一层SSL的数据加密过程,已达到安全传输的问题。下面来说一下自己对HTTPS工作流程的一点理解: 1. 客户端发起HTTPS请求。 2. 服务端生成公钥和私钥(可以自己制作,也可以向专业组织申请) 3. 服务端把相应的公钥证书传送给客户端 4. 客户端去解析证书的正确性,如果证书没问题,则会生成一个随机数(密钥),用公钥对产生的随机数原创 2017-07-12 10:25:31 · 594 阅读 · 0 评论 -
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 · 431 阅读 · 0 评论 -
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 · 291 阅读 · 0 评论