自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iOS开发

学无止境

  • 博客(179)
  • 收藏
  • 关注

转载 iOS 获取当前正在显示的视图控制器ViewController(最全)

一、前言:本来不怎么想写这篇文章的, 因为这种东西网上随便搜一大堆。但是还是发现项目中有些同学,没怎么理解好,直接照搬网上的,殊不知其本身虽处理了大部分情况,却仍有一些情况是漏掉的。所以就有了下面这篇文章。二、场景:在处理 URL Router 跳转的时候,经常需要得到“当前最上层的视图控制器”来进行视图跳转。三、注意点:网上比较多遗漏的场景是:A present B, B presen...

2019-08-18 19:40:38 6578

原创 UItableviewCell 自动设置Cell高度(UITableViewAutomaticDimension)

我们之前在tableview中,经常要设置行高,如果设置了一个固定的高度,就达不到“数据驱动UI”了效果了。接下来,我写了一个demo,看看效果:ViewController:#import "ViewController.h"#import "TestCell.h"#import "TestModel.h"@interface ViewController ()<UITableV...

2019-08-17 12:11:46 8479

原创 iOS 数组遍历的同时移除元素(reverseObjectEnumerator)

之前数组遍历的同时,想同时移除元素,我们是不能直接通过for循环来删除的,一不小心就崩溃。一般我们是采用 enumerateObjectsUsingBlock 来进行元素的删除,这个是可以的。今天想介绍一种不一样的方法:逆序遍历 NSMutableArray *tempArray = [NSMutableArray arrayWithArray:@[@(1),@(2),@(3)]]; ...

2019-08-16 15:22:22 2629

原创 makeObjectsPerformSelector 实现轻松移除subview

之前我们移除subview 总是通过遍历,然后在遍历中移除,比较费劲,现在发现了一个比较便捷的办法,就是通过makeObjectsPerformSelector 实现让每一个元素执行同一个方法:removeFromSuperview。[self.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSupervie...

2019-08-16 14:21:24 492

原创 cocoapods 困扰问题解决

find_spec_for_exe’: can’t find gem cocoapods (&gt;= 0.a) (Gem::GemNotFoundException) from /Library/Ruby/Site/2.3.0/rubygems.rb:299:inactivate_bin_path’ from /usr/local/bin/pod:23:in `解决步骤:1、sudo ge...

2018-10-04 21:07:21 3933 1

原创 CocoaPods之pod search 不到新库的解决办法

如果你使用pod search 发现搜索的库是老的库或者search不到,那么你可以这样试一下: 1、先: pod setup, 2、执行: rm ~/Library/Caches/CocoaPods/search_index.json亲测有效

2017-10-17 13:55:59 3856

原创 iOS 11 无线调试

iOS 11 与 xcode9 是可以进行真机调试的,但是连接还是比较容易断,锁屏就断了。所以不太建议这么搞。尝鲜可以。 网上都是说 直接点击 是的,但是拔掉数据线之后,老是说连不上,所以我干脆用IP来连 这种方式来的快而且稳定很多,这样就实现了无线真机的调试了

2017-10-16 11:35:21 1255

原创 UIMenuController 显示不出来的原因

刚刚在IM要显示UIMenuController菜单,但是总是显示不出来,其实之前有过这么一个坑了,现在又跳进去了,真是。。。UIMenuController 显示不出来的最大的原因 是第一响应者 没设置好,要在对应的cell中- (BOOL)canBecomeFirstResponder { return YES;}使其成为第一响应者,要不然你在外面使用这个cell的时候,你直接 [ce

2017-10-12 16:03:01 3604

原创 iOS 当UIbutton设置不上图片时候,可能是这个原因,笔记

昨天下午纠结了一小会,为啥给一个button设置image 就是显示不出来,在此,为了节省大家的时间,可以试试这个原因可能是这里 你没有勾选上。方便大家的同时,也做个笔记

2017-10-12 13:56:18 1050

原创 webView 默认距离顶部20的解决办法

若无导航栏的情况下,webview默认距离顶部20;效果是这样: 若想去除这20的距离,加上这句代码即可:self.edgesForExtendedLayout = UIRectEdgeNone;效果如下:

2016-11-24 08:57:36 9298

原创 FMDB删除前50条数据的写法

删除前50条数据delete from tab where (select count(Id) from tab)> 50 and Id in (select Id from tab order by Id ASC limit 50);换成相应的数量即可,若想删除50条之后的数据,用这个:delete from tab where (select count(Id) from tab)> 50 an

2016-09-26 14:29:47 3735

原创 上传AppStore时,适配iOS10

之前看过别人的文章,说适配iOS时,要注意的事项,由于我只用到了定位和相机,相册功能,所以我添加权限的时候,我只添加了这两项的权限在info.plist文件。但是上传到AppStore的时候,就被拒了,说我没有添加日历和音频的,无奈。。。只好把所有的权限,都添加进去得了。现在等着苹果的审核咯。 记得把所有的权限,都添加进去//摘取别人写的 麦克风权限:Privacy - Microphone U

2016-09-26 13:57:30 1226

原创 环信IM客户端集成(整理)

1. 环信IM功能介绍    1. 平台架构           2. 发送消息        1. 
        2. 为开发者提供基于移动互联网的即时通讯能力,如单聊、群聊、发语音、发图片、发位置、实时音频、实时视频等。    3. 用户体系集成        1. 客户端登录集成            1. APP 客户端在登录自己的 AP

2016-09-20 17:24:01 5227

原创 Xcode8 解决注释以及VVDocumenter无法使用

1、命令行里输入:sudo /usr/libexec/xpccachectl2、重启电脑VVDocumenter-Xcode无法使用的解决办法: 使用快捷键:option + command + /

2016-09-19 15:23:19 2587 1

原创 后台要传数组的json串

今天碰到一个很奇葩的问题,就是后台要统计我的分享资讯模块,所以我要把资讯分享的内容传给后台。一条资讯的栏目,可能有好几个,比如:热门,最新等。当时请求后台的数据的时候就是返回一个资讯的栏目数组。现在分享的时候,后台对我这边的要求就是,一开始资讯是怎么传过来的,我就要怎么给他传回去。那么问题来了。他文档上写着栏目的tag是一个string(32)。我靠。。。 - 然后接下来,我就各种找资料,找数

2016-09-12 23:21:35 2842

原创 字典转模型时,字典包含字典

之前接到一个朋友问字典转模型时,但是key是不固定的,然后就突然懵逼的事情。我觉得还是有必要写出来,供有需要的朋友进行参考。废话不多说,先举个例子先: 可能有些人到这里会懵逼,突然不知道怎么入手。其实这个结构并不复杂,我通过key:1、2、3、4、5…取到里面的字典的内容(即我们模型的内容),就可以进行转换了。 NSArray *arrdata = responseObject[@"

2016-09-11 23:22:57 854

原创 数组排序:对象数组中根据对象的某个字段排序

开发中,经常碰到数组的排序问题,当然原始的冒泡、选择排序,还是比较好用的。我们常常需要后台排好序再返回,当然也有需要前端排序的。我觉得数组的排序,根据对象数组的某个字段排序,是非常常见的。现在来说说:sortedArrayUsingSelector - (void)sortArray1{ NSArray *tempArray = [NSArray arrayWithObjects:@"

2016-09-09 15:55:15 7504

原创 说一下字典的:addEntriesFromDictionary用法

谈一下addEntriesFromDictionary在字典中的用法:废话不多说,先上代码: NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"BMW",@"CarLogo",@"Red",@"CarColor", nil]; NSDictionary *dic2 = [N

2016-09-09 11:04:15 26182

原创 记录一下:webView加载不了链接的问题

一个正常的webview页面,给一个链接,安卓那边能正常加载出来,iOS这边不行,这就显得非常尴尬。通过查找资料以及断点发现。- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error这个方法中,error.code = -999。查资料发现是跳转太快,所以在这个方法里面进行一下处理。- (void)web

2016-08-29 17:26:16 5651

原创 笔记:pop时,右上角出现黑边的处理办法

由于第一个页面是隐藏navigationBar的。但是第二个页面不需要隐藏,这个时候左上角就出现了pop时的黑边。网上有相应的办法,可能对很多人有用,但是对我无效。由于我的这个项目是由navigationcontroller 包含 tabbarcontroller,(不要问为什么,老项目)。所以我现在就进行了特殊的处理。由于之前是需要navigationController的navigation

2016-08-29 17:21:38 1051

原创 笔记:NSDictionary 转 NSString

由于开发的方便,有时候需要将NSDictionary通过NSLog打印出来,比如生产环境的推送时,我们不能直接的打断点调试,所以摘录一个方法,以便打印方便: 2. -(NSString*)DataTOjsonString:(id)object { NSString *jsonString = nil; NSError *error; NSData *jsonData = [NSJ

2016-08-29 17:12:40 12773

原创 给tabBar设置图片和字体颜色的几种方法

现在很多应用都使用到了tabBar,我们往往在给tabBar设置图片和字体的时候,当选中状态下,往往字体的颜色和图片的颜色不匹配,有时候就显得无从下手,我也常常忘了,所有写这个博客的目的,相当于给自己做个笔记,也希望给有需要的朋友们一点帮助。写了个小demo,来演示这个问题: - (void)viewDidLoad { [super viewDidLoad]; ZYGroupBuy

2016-01-23 23:45:49 17730

原创 CABasicAnimation 使用的细节(跳转,后台,前台)处理

这回我们来总结一下CABasicAnimation使用中的一些细节的处理问题,避免一些比较蛋疼的事情发生,显得无从下手:一般的动画,我们这样写:///开始旋转 - (void)beginRotation{ CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]

2016-01-22 23:10:03 6056

原创 剖析运行时(让你看懂运行时)

运行时机制:比较高级的特性,纯C语言实际上我们平时写的OC代码,都是转成C语言的运行时代码,运行时代码的效率更高,更直接Person.h@interface Person : NSObject@property(nonatomic,assign)int age;@endmain.mint main(int argc, const char * argv[]) { @autorele

2016-01-21 21:10:17 1923

原创 自定义modal动画

在很多场景中,我们都需要实现各种动画,这回我们来尝试搞一下控制器间跳转的modal动画。 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ ZYSecondViewController *second = [[ZYSecondViewController alloc]init];

2016-01-21 01:16:24 1175 1

原创 扫描二维码

其实扫描二维码,用到了这个框架:#import <AVFoundation/AVFoundation.h>@interface QRCodeViewController ()<AVCaptureMetadataOutputObjectsDelegate>@property (nonatomic, strong) AVCaptureSession *session;@endviewDidLoad

2016-01-19 22:09:27 1361

原创 生成二维码

我们简单的使用一下CIFilter来完成二维码的生成,解剖一下二维码的生成过程查找到 kCICategoryBuiltIn 内建的滤镜名NSArray *filterNames = [CIFilter filterNamesInCategory:kCICategoryBuiltIn]; NSLog(@"%@",filterNames);找到这个CIQRCodeGenerator@prop

2016-01-19 12:39:15 1917

原创 精简版—愤怒的小鸟

首先我们要布局一下,使用sizeclass来布局:连线过来:@property (weak, nonatomic) IBOutlet UIButton *bird;@property (strong, nonatomic) IBOutletCollection(UIImageView) NSArray *ices;对于冰块的连线,因为我们这里的冰块有4块,所以我们直接连的是一个数组懒加载一个U

2016-01-18 23:31:25 1935

原创 CollectionView实现瀑布流(swift)

我们用纯代码实现一下瀑布流: AppDelegate:var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { window = UIWind

2016-01-14 20:39:57 3955

原创 经验之谈—正则表达式实现图文混排

在项目中,我们经常需要发表情,以及经常需要将表情字符转换成表情。因为表情是一个图片,所以我们发给服务器的时候,实际上是发一段特殊的文字给服务器,然后转换成表情。以免浪费用户过多的流量。那接下来,我们就来介绍一下,如何使用正则表达式实现图文混排呢?为了以后的代码的管理方便,我们抽取出两个类:NSString+Regular.h中,我们暴露两个方法出来:/** * 返回正则表达式匹配的第一个结

2016-01-06 23:08:50 2668

原创 Swift 部署到服务器—添加忽略文件

由于开发的需要,或者说是团队开发的需要,常常要将代码部署到服务器上,比如部署到github,oschina,上,对吧,比如oschina,但是oschina中,到了添加忽略文件的时候,并没有我们想要的忽略文件: 那就需要我们手动的来添加忽略文件了,对吧 一般来说:我们需要忽略这个文件: 那么我们就在忽略文件中: 最后将文件通过git提交到服务器就搞定了

2015-12-26 20:31:15 1093

原创 经验之谈—实现图片下拉放大的效果

这里我们主要是用一下,如何能保持原来的图片的宽高比来轻松的实现放大的效果,主要的是UIViewContentModeScaleAspectFill这个起的效果:我们用tableView来展示这个效果吧我们这里并没有计算图片的宽高比,直接用UIViewContentModeScaleAspectFill来实现#import "ViewController.h"const CGFloat ZYTop

2015-12-22 19:15:12 11938

原创 经验之谈—如何让图片长的好看(contentMode)

我们在开发中,经常要在view,tableView,等显示图片,比如我们发微博(带有图片的),那么我们常常要考虑如何处理这些图片,是否拉伸,拉伸到什么样的效果等等,常常是需要考虑的问题其实主要的还是要理解UIImageView的ContentMode的这些参数,这些参数一般就能满分我们的开发需求 UIViewContentModeScaleToFill, UIViewContentMod

2015-12-22 19:02:16 3608

原创 经验之谈—UIButton传值通过枚举

其实在我们开发中,经常会遇到有些朋友写的代码里面,由很多的数字,如果你突然看到了一堆的1,2,3,4,5,或者switch判断里面,case 1: cae 2: case 3 等等,这些代码往往给人很蒙的感觉。无从下手,其实这就是我们所说的可读性很差的代码。其实说起可读性的话,那么我们现在也顺便说一下注释的问题(题外话),其实我们发现,很多大公司,写的注释反而很少,为什么,因为他们的代码就是

2015-12-22 12:27:49 2575

原创 经验之谈—项目如何分模块(MVC)

一般来说,无非就两种情况: 我们假如一个项目是长这样子的: 随便找一个来说,比如找美团的:按MVC来分模块根目录Controller团购上门商家我的更多Model团购上门商家我的更多View 团购上门商家我的更多按模块来分MVC团购 ControllerModelView上门ControllerModelView商家ControllerModel

2015-12-22 09:01:19 5709

原创 经验之谈—如何快速熟悉公司的旧项目

我们打个比方,假如你去到一家公司,然后一开始,要下载公司的旧代码,接下来就是熟悉公司的旧代码,假如这个项目是两三年前做的,那么一直搞到现在,假设有10万行代码,那么让你来熟悉这些旧代码,然后在旧代码的基础上,增加新的功能模块,是非常苦逼的,有时候,都不懂怎么入手。如果你想从上往下一行一行的来阅读,那么当你花了大量的时间去阅读完之后,一无所获,看完之后,都忘了。这时候,就显得非常的悲催。。。方法:搜

2015-12-19 20:29:02 8971 4

原创 经验之谈—OAuth授权流程图

其实我们在开发中,经常需要解决获得用户的一些特定的数据,比如:可以选择使用微博登陆,使用QQ登陆等等,然后我们间接的获得用户的头像,昵称等信息。这些都涉及到OAuth授权的内容OAuth授权有这么几个特点: OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准OAuth 的授权不会使第三方触及到用户的帐号信息OAuth 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在

2015-12-19 09:46:18 2282

原创 Pod安装 第三方框架

可能有些朋友在开发中,需要用到第三方框架的时候,都是直接拖进项目里面,然后引入需要的头文件,开始操作。其实也能把项目做出来。但是由于第三方框架一般依赖于系统的一些框架,所以你导入第三方框架的时候,编译之后,还得去导入系统的一些框架,造成一些比较繁琐的工作。所以使用pod来安装,第三方框架,就显得比较便捷。比如项目中,我们需要用到以下第三方框架: AFNetworking SDWebImage

2015-12-19 09:35:05 3185

转载 提高iOS开发效率的第三方框架等--不断更新中。。。

写iOS 程序的时候往往需要很多第三方框架的支持,可以大大减少工作量,讲重点放在软件本身的逻辑实现上。GitHub 里面有大量优秀的第三方框架,而且 License 对商业很友好。一下摘录一下几乎每个项目都想集成的几个框架。 SDWebImageView     1. MantleMantle 让我们能简化 Cocoa 和 Cocoa Touch 应用的 m

2015-12-18 21:18:29 622

原创 经验之谈—自定义tabbar(继承于UITabBar)

自定义tabbar一般来说有两种方式,一种是继承于系统的UITabBar,一种是继承与UIView的tabbar。我们现在来看一下继承与UITabBar这种情况中需要注意的一些细节。其实继承与UITabBar我们无非是想修改一下tabbar中的子控件的frame或者是添加子控件等。我们接下来添加一个按钮到自定义的tabbar上。注意的地方:我们先打印一下看看UITabBar里面存在的子控件:

2015-12-16 23:58:00 1893

空空如也

空空如也

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

TA关注的人

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