自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 一道 Runtime 面试题的思考

这道面试题大部分应该都见过 https://halfrost.com/objc_runtime_isa_class/@interface Sark : NSObject@property (nonatomic, copy) NSString *name;@end@implementation Sark-(void)speak{ NSLog(@"*******my ...

2020-02-03 15:56:17 166

原创 Collectionview 与父视图 手势冲突

场景如下:controller的view上添加了一个手势, 在view上添加一个collectionview;这会引起手势冲突,collectionview上select方法不执行;解决方案:在父视图的手势处理方法做如下处理- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRec...

2020-01-09 21:13:06 879

原创 OpenGL ES 绘制三角形

这篇博客是根据我的一个工程整理而来,用于理清思路, 使用OpenGL 记性绘制的一般流程.当前的controller 是继承于GLKViewController;- (void)viewDidLoad { [super viewDidLoad]; [self setupContext]; [self setupShader];}setupContext...

2019-11-19 11:22:18 149

原创 OpenGLES 入门理解

先推荐几篇好的博文:https://niyaoyao.github.io/2018/05/23/learning_opengl(es)_opengl_model_pipeline_and_practices/https://blog.csdn.net/lance710825/article/details/78137950/https://learnopengl-cn.readthed...

2019-11-15 15:37:29 956

原创 GPUimage 滤镜视频录制

本篇是基于落影的博客进行记录,用以学习.要做的任务: 开启摄像头, 画面加了一个滤镜实时显示, 点击录制,对加了滤镜的视频进行保存,录制结束,将数据写入到相册中.整体的流程是这样.用GPUimageVideoCamer 进行图像和音频的捕获, 视频通过滤镜处理,之后有两个流向;1. 直接显示 //初始化 _videoCamer = [[GPUImageV...

2019-11-12 22:07:08 318

原创 Dealloc 实现 原理

当对象的引用计数Wie0时, 系统会调用对象的dealloc方法释放- (void)dealloc { _objc_rootDealloc(self);}在内部void_objc_rootDealloc(id obj){ assert(obj); obj->rootDealloc();}继续调用了rootDealloc方法显然调用顺序...

2019-11-05 20:39:26 770

原创 从OC到Swift的快速实践

本文是参考这篇博客, 里面的内容 ,我用playground实践了一遍,记录自己的理解和思考.一. 数据swift是数据安全类型, 不存在隐式转换.类型转换标识符:is: 一个实例是否是某一种类型as: 将实例转换成某一种类型(子类型 -> 父类型)as?: 将某个类型转成可选类型, 通过判断可选类型是否有值,来决定是否转化成功as!: 转成具体的类型,如果不...

2019-11-03 14:54:10 329

原创 weak与字符串

weak的特点是不会使引用对象的引用计数加一,即不持有对象,在对象为nil时,自身也会为nil.但是在字符串这里有一点区别weak修饰的属性引用了一个常规的对象,当这个对象被释放时, weak对象也会被释放.但是在字符串中似乎有些不一样://有两个属性@property (nonatomic, copy) NSString *imCopyStr;@property (nona...

2019-10-29 22:17:11 594

原创 GCD 实现多线程顺序执行

这个标题其实是有些不对的, 实际要实现的功能是执行完A,B,C 三个任务之后, 再执行D.第一种方式:使用dispa_group完成- (void)orderImplementGCD{ dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_group_t group = dispatch...

2019-08-27 17:25:54 490

原创 anchorPoint 和 position

读到一篇讲UIView frame 实现的博客, 对相关知识进行了一个总结https://mp.weixin.qq.com/s/ImYWnDeq4gG_gUkL3_ZDgwview的frame计算要牢记几点, 计算公式如下:frame.origin.x = position.x - anchorPoint.x * bounds.size.width; frame.origin.y...

2019-08-14 17:17:43 291

原创 ios xib 表视图的headview 自适应高度

需要完成一个需求: tableview的headView中有一个可换行的label, 需要headview写入数据时, tableview的headView的高度自适应. 不手动计算字符串的高度;1. 在headview的操作:1.1 headview的xib,所有的控件约束要保证是正确的,从上到下的约束要确保有,并且是正确的.1.2 在headview的.m文件中,要设置高度变化...

2019-05-27 19:25:41 1492

原创 tableview复用cell的两种方式

在- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {中, 复用cell时 , 有两种方式1. 你在之前已经使用下列方法对tableview的cell进行注册过了[_tab...

2019-05-07 16:44:25 335

原创 使用xib 自定义cell, 自适应高度方案

在计算cell的高度这个问题上,经历三种阶段; 1. 使用纯代码创建cell, 这个需要根据model的数据, 手动计算label的size, 再根据其它控件的位置, 来计算cell的整体高度. 2. 使用xib创建cell, 然后使用了一个比较牛的第三方FDTemplateLayoutCell, 简单说一下用法: cell的约束必须在top,和bottom 与内部的控件有约束, 这样才可以...

2018-07-19 14:32:52 1154

原创 UIGraphicsGetCurrentContext vs UIGraphicsBeginImageContext

看了Core Graphics 的一点内容, 然后在自己的代码中看到了一个不一样的函数, 有些迷惑,就搜索了相关内容, 发现Stack Overflow上一篇帖子讲的很清晰.链接;总结成一句话:UIGraphicsGetCurrentContext 在drawRect 方法中使用,获得上下文; UIGraphicsBeginImageContext在任意一个你想进行图片处理的方法中条用....

2018-07-18 16:28:21 405

原创 xib label约束的优先级

在平行或者垂直方向,对两个内容自适应的label进行约束,需要设置其Content Compression Resistance Priority(内容压缩阻力优先级)或者Content Hugging Priority(内容紧靠优先级) 进行正确合适的约束. 这一篇博客讲的通俗易懂, 推荐Autolayout——“Content Compression Resistance”和“Conten...

2018-07-16 15:15:25 1606

原创 iOS 中应该避免的坑

这篇博客是作为自己开发时的一些准则,遵守这些准则,保证代码的质量. 会陆续更新……内存泄漏: 如果初始化了一个变量,结果没有使用, 那就把这行代码删除或者注释. 这种情况就是内存泄漏,积少成多,会出问题....

2018-07-08 18:05:33 157

原创 iOS 多target开发(快速开发一个重复的APP)

一个工程打包时,想同时发一个企业版和App Store,就会遇到一个问题. 企业版账户打包的APP 不能发布到App Store中, 所以我们需要改变bundle id. 如果直接修改bundle id, 就在每一次打包发布时,需要反复切换修改bundle id,这样很容易出岔子. 而使用多target就能容易的实现这一目标. project和target的区别:project ...

2018-07-02 21:27:08 1571

原创 在for循环中,对可变数组进行删除操作

/** 在可变数组中进行删除删除操作,比如移除值为3的元素, 原下标为4的元素变成下标为3, 那么在下一次循环(这个循环有元素的比较)中,这个元素是不会被执行的, 因为位置变了; 所以: 1.不在for循环中进行数组删除 2.在移除元素之后,将i-1, 回到这次循环之前. 2.1: 使用i–,要保证是值比较,而不是下标比较,否则就停在这个循环了 */ - (v...

2018-06-22 14:31:34 893

原创 UISearchController使用中遇到的坑

这次开发需要用到搜索框, 以前大都是使用UITtexField进行自定义的,这次使用了UISearchController. 在iOS8之前,使用的的是UISearchDisplayController+SearchBar的组合, iOS8之后,原有的方式废弃, 苹果推荐使用UISearchController,其本身包括searchBar.但是使用中出现了一系列问题 UISearchC...

2018-06-21 21:30:49 2249 2

原创 UIButton 图片(imageEdgeInsets)和文字(titleEdgeInsets)设置

上面的界面可以很方便的使用tableviewCell 来实现, 但是如果只是简单的两三个,使用tableview 就显得有点臃肿了;1. 你可以封装一个控件,在一个view上放置一个imageview和一个label, 加上点击事件,搞定了;2. 但是为什么不尝试另一种方法呢? 直接使用UIButton,这个控件内部有一个imageview和label,适当调整它们的位置, 我们就可以很容易实现想...

2018-06-21 16:30:02 293

原创 HTML用JS画图形

H5中有画布(Canvans), 可在使用JS在画布上面绘制图形://画制一个矩形    //先得到画布    var canvas = document.getElementById('lookwhatidrew');    //创建一个可以绘制2d图形的上下文    var context = canvas.getContext('2d');    //画制一个矩形  //图形填充颜色  ...

2018-06-07 21:38:39 3955

原创 iOS 跳出循环 break,continue, return

最近用for循环比较多, 发现自己偶尔还会迷糊. 这里做一个简单的记录:    1. break; 如果在for循环中, 直接跳出当前for循环;  如果是双层for循环,如果break,在第一层,则跳出第一层; 如果在第二次则跳出第二层, 第一层继续执行之后的;    2.  return; 直接跳出最外层循环, 不论是在几层for循环中; 去执行最外层循环之后的代码去了;    3. cont...

2018-05-30 13:12:05 24950

原创 使用xib自定义视图的两种用法

前言: 去年开始使用xib进行界面开发,相比代码,效率更高,大大节省了时间. 但是在使用时,碰到一个问题一直很让我疑惑, 虽然我知道应该在什么时候用哪种方式, 但是内部的原因还不是很懂.我们在使用xib创建自定义视图时,有两种方式:如下图标记 1代表第一种方式,2代表第二种方式我并不知道这两种创建方式的根本区别,表面区别是创建之后里面一个有view,一个没有需要手动添加. 但是

2018-01-17 16:12:12 550

原创 iOS 百度翻译API 接口实现效果

昨天接到几个新任务,  第一个是要实现文字翻译功能. 从网上搜索资料发现常用的有百度翻译, 有道翻译 , 谷歌翻译.三者尽心对比: 1. 百度每月200万字符下免费    2. 有道收费,初始送100元体验金            3.谷歌翻译纯英文文档.综合考虑, 百度翻译免费,支持语言更多,决定使用百度翻译.前期准备大致相同,注册账号,申请APPID和密钥. 一个账号只能申

2018-01-16 22:30:12 3769 1

原创 xib 创建自定义view,作为tableview的headView出现的问题

问题描述: 我用xib自定义了一个视图,作为tableview的headView, 不是sectionheadView(这个也存在);    设置的时候出问题了代码如下:  FindHeadView *view = [FindHeadView customInit]; view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 150); head

2017-12-04 13:50:55 661

原创 iOS 更改tabbar字体颜色 自定义controller返回按钮

改变系统的tabbar字体颜色://设置你想要显示的颜色 NSDictionary *dictHome = [NSDictionary dictionaryWithObject:MAIN_TABBAR_COLOR forKey:NSForegroundColorAttributeName]; [navCtr.tabBarItem setTitleTextAttributes:dic

2017-11-21 14:13:05 354

原创 iOS UItableviewCell 自定义选中颜色及默认选中首行

需求如标题, 实现方法如下:在didSelectRow中进行如下设置:- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView cellForRowAtIndexPath:

2017-11-03 14:37:30 6738

原创 Xib 在UIImageView无法添加subViews

在xib中,如果你想在UIImageView上添加一个控件(UIButton), 你会发现在左侧的层级视图上,imageView和button是同一层级的; 这与我们想要的结果不符合.我在网上找到了这个问题,有人给出了这个解决方案:点击打开链接;大致方法如下:在xib文件中,无法添加一个子视图到UIImageView上,形成父子层级,只能形成同级视图;你可以先添加一个UIVie

2017-10-17 15:07:54 2161

原创 iOS GCD 学习

GCD 优势: 1. 可以用在多核并行运算2. 自动利用更多的CPU内核3. 自动管理线程的生命周期任务:  GCD里的操作,分为同步执行(sync)和异步执行(async), 一般使用async,开辟了一个新线程执行任务队列:存放任务的队列,一种特殊的线性表,遵从FIFO原则,分为并行队列和串行队列并行队列: Concurrent Dispatch Q

2017-09-14 15:05:40 153

原创 collectionView reloadData 之后 cell消失

最近在实现一个功能, 将网络图片等比例显示出来; 由于使用的是collectionview, 在cell中得到图片的大小,需要刷新整个视图; 图片是正常的可以等比例显示, 滑动之后,有部分cell消失不显示了;       在开始我以为是重用出错了, 在进行调试的时候,打印cell,发现hidden属性是YES; 那些消失的cell时隐藏了; 直接设置cell的hidden属性不起作用;

2017-09-12 13:46:52 2321

原创 iOS中集成ijkplayer视频直播框架 (error: setupDisplay not ready)

这是集成ijkplayer的一篇知识点,可以帮你快速集成,看到效果.如果想自己一步一步集成框架,可以在从网上参照其它帖子 :http://www.jianshu.com/p/1f06b27b3ac0此过程十分繁琐,需要最终得到一个框架,然后集成到工程中去;我从网上找到一个编译好的框架:链接:http://pan.baidu.com/s/1kUAYbQJ  密码:z6k9

2017-08-23 14:47:54 7125

原创 Xib隐藏控件以及frame(位置)改变

最近在学xib, 其中一些基本的已经掌握,但还不够熟练:如scrollview的xib约束;xib创建控件需要用到约束(autolayout),autolayout进行了封装就是我们常见的masonry;当你使用纯frame进行布局的时候,是确定一个控件的x,y,width,height; 那在使用xib的时候也是如此,不论你怎么进行约束,你确定的其实还是这些值,需要让xib知道控件的位置

2017-08-11 11:33:30 4044 1

原创 从present的界面push到另一个界面

假设工程中有三个界面, A -> B ->C; 由A进入B时present进去的,B->C是push进去的; 第一个很好实现,第二个却会花了一些时间;在B中跳转的方法中进行如下设置:     //当前的controller是present形式展现出来的,所以不在controller内,从而重新进行了设置; 但是这样做会丢失之前的nav中的viewController,

2017-08-10 11:13:32 3038

原创 iOS开发之涂鸦板

这是一个很简单的涂鸦板,只能在这里画线条而已~首先创建一个可变数组:#import "PaintView.h"//延展 在延展中声明的属性只能属于这个类@interface PaintView ()//用于保存所有线段的数组@property(nonatomic,retain)NSMutableArray *allLines;

2015-11-26 15:15:28 718

原创 iOS 开发值翻牌子游戏

这是一个翻牌子的游戏~~在window上添加了一个imageView,设置了一张图片:在这张图片上调添加了足够多的button;具体如代码所示:    UIImageView *imageView = [[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"green.jpg"]];    imageView.frame

2015-11-25 21:14:58 708

原创 iOS 开发之封装

继承,封装,多态是面向对象编程的三大基石;在UI 中,封装可以降低代码的冗余度,节省代码量,避免了重复代码;在这里简单的封装了一个label和一个textField,组成了一个登陆界面的样式;新建了一个视图,这是视图的.h文件,这个视图的一些方法;这个是.m文件中:对label和textField进行布局以及实现.h中的方法:#imp

2015-11-25 20:49:59 507

原创 iOS之Button以及警告视图(简单)

//创建一个button    UIButton *button1 = [UIButtonbuttonWithType:UIButtonTypeSystem];    button1.frame =CGRectMake(0,0, 60, 40);    button1.center =self.window.center;    [button1 set

2015-11-25 20:34:40 470

原创 数据库:好用的第三方FMDB

系统的数据库使用起来并不是很方便,比较繁琐;比较优秀的,被大量使用的第三方数据库当属 FMDB; FMDB是一个封装较好的数据库管理工具 ,以下是它的详细用法:创建:1.我将数据库的创建路径写成了一个宏定义 : #define DBPATH [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDom

2015-11-21 19:19:42 560

原创 KVO 设计模式之观察者模式

//1.KVO主要用于Model类,当Model类的一个属性发生变化的时候,会触发事件        //2.在设计模式中,有一种设计模式是观察者模式        //3.KVO是观察者模式的实现方式        //4.KVO里面涉及的几个概念        //4.1被观察者一般是我们的Model类    //4.

2015-11-06 10:44:18 544

原创 本地通知 UILocalNotification

本地通知:创建本体通知,在iOS8.0之后,使用本地通知必须注册UIUserNotificationSettings获得当前版本号,进行注册://1.创建一个本地通知 UILocalNotification *locallNot = [[UILocalNotificationalloc]init]; //2.先做一下iOS版本的判断,因为i

2015-11-05 12:00:58 451

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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