
iOS
文章平均质量分 58
args_
这个作者很懒,什么都没留下…
展开
-
宏定义中的##操作符和... and _ _VA_ARGS_ _
1.Preprocessor Glue: The ## Operator预处理连接符:##操作符Like the # operator, the ## operator can be used in the replacement section of a function-like macro.Additionally, it can be used in the repla转载 2016-11-03 16:05:56 · 1448 阅读 · 0 评论 -
Uber的启动画面是如何制作的
启动画面(Splash Screen)——不但给开发者们提供了一个尽情发挥、创建有趣动画的机会,也填补了App启动时从终端慢吞吞地下载数据的时间。启动画面(动态的)对于App至关重要:它可以让用户不失兴趣地耐心等待应用完成加载。尽管现在的启动画面多种多样,但很少有像Uber这般精美的。2016年第一季度,Uber的CEO发表了关于重塑品牌的策略,其中之一就是现在这个超酷的启动画面。转载 2016-08-16 09:15:46 · 1169 阅读 · 0 评论 -
button如何旋转后同时改变触发位置
- (void)setAnimation:(UIButton *)uibtn{ int randomnum = arc4random() % 90 - 45; CGAffineTransform t1 = CGAffineTransformMakeRotation(randomnum * M_PI / 180.0f); [UIView animateWithDuration:0原创 2016-08-04 11:47:43 · 440 阅读 · 0 评论 -
setValuesForKeysWithDictionary方法的正确使用姿势
1.为什么用之前给model赋值的时候,一个一个往上写,写的贼tm烦,所以一直想找一个简单方便的方法。。。来张图感受下。2.怎么用用这个之前我是知道有这么一个方法能快捷的赋值的,但是为什么没用呢?因为它搞不好就崩。使用方法很简单: Model *item = [[Model alloc]init]; [item setValuesForKeysWithDictionary:dic];原创 2016-07-14 17:24:33 · 4295 阅读 · 0 评论 -
unable to dequeue a cell with identifier - must register a nib or a class for the identifier...问题
之前也曾遇见这个问题(或者类似问题),但是忘了是怎么产生的了。这次的问题出现在以下代码TopPageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath ];应该改成 TopPageTableViewCell *cell = [tableView dequeue原创 2016-07-14 16:59:17 · 1292 阅读 · 0 评论 -
iOS开发 如何在Label中显示图片-图文混排
在实际项目开发过程中,我们常会遇到一段文字中既要有图片又要有文字,例如我们经常使用的QQ、微信的聊天对话框中,表情和文字共存就是一种典型的图文混排。QQ20150827-1.png可以直接使用Quart2D,直接在Label的draw方法中画图片上去,但是这种方法成本比较高,我们推荐使用text自带的属性来做。要做到图中在文字中插入表情的效果,首先我们得来了转载 2016-06-16 17:18:54 · 1398 阅读 · 0 评论 -
如何截取scrollView里面的图片
如下- (UIImage *)captureScrollView:(UIScrollView *)scrollView{ UIImage* image = nil; UIGraphicsBeginImageContext(scrollView.contentSize); { CGPoint savedContentOffset = scrollView.con原创 2016-07-12 16:55:53 · 939 阅读 · 0 评论 -
iOS开发中的一些常用方法
1.磁盘总空间大小+ (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&erro转载 2016-06-30 10:02:38 · 708 阅读 · 0 评论 -
iOS app旧貌换新颜(一)Launch Page让Logo"飞"出屏幕
文/一缕殇流化隐半边冰霜(简书)转自 http://www.cocoachina.com/ios/20160603/16595.html前言当今是个看脸的世界,一个app的颜值可能会决定用户的使用次数,icon的颜值更可能决定了用户是否回去下载,如果太丑,放在手机桌面都难看,那用户很可能就直接卸载了。所以漂亮的界面UI + 合理的用户体验UX/UE也会很大程度决定用户的黏性转载 2016-06-12 10:28:07 · 676 阅读 · 0 评论 -
Xcode6中如何修改文件中自动创建的Created by和Copyright 文件模板
在Xcode6创建问的时候,会自动生成注释// Created byxxx on 15/7/10.// Copyright (c) 2015年 xxxx. All rights reserved.xxx默认为电脑用户名,那么如何修改呢?方法如下:右键Xcode图标,显示包内容 /Contents/Developer/Library/Xcode/Templates/F转载 2016-02-24 11:16:57 · 2953 阅读 · 0 评论 -
iOS ffmpeg编译,C compiler test failed.问题
如何编译ffmpeg使用大牛编写的自动化脚本 脚本地址: https://gist.github.com/m1entus/6983547 运行这个脚本需要依赖一个库Perl写的脚本,搜了一下网上目前编译FFmpeg库的帖子基本都会提到这个脚本,脚本地址如下: https://github.com/mansr/gas-preprocessor。 下载完这两个脚本后,编译FFmpeg库的准备工作就原创 2016-05-09 20:39:24 · 11768 阅读 · 0 评论 -
利用runtime查看苹果私有API
Objecitve-C的重要特性是Runtime(运行时),在Interacting with the Runtime(交互运行)中,运行时函数部分,苹果给出了/usr/lib/libobjc.A.dylib库,这个共享库提供支持动态属性的objective - c语言,通过其接口,可以用于开发将其他语言运行于Objective-C上的中间层(桥接层),库里的函数定义为纯C语言。这里我们要用库里的函转载 2016-05-19 16:05:16 · 783 阅读 · 0 评论 -
正确使用iOS常量(const)、enum以及宏(#define)
前言:本文主要梳理iOS中如何使用常量、enum、宏,以及各自的使用场景。重要的事情首先说:在iOS开发中请尽量多使用const、enum来代替宏定义(#define);随着项目工程的逐渐增大,过多的宏定义还可能影响项目的编译速度。宏定义大家应该都不陌生,使用起来非常简单,首先我们先来看一下宏定义跟const的区别:1.宏在编译开始之前就会被替换,而const只是变转载 2016-05-30 11:21:01 · 553 阅读 · 0 评论 -
iOS实时滤镜实现--基于GPUImage。
1. 背景前段时间由于项目需求,做了一个基于GPUImage的实时美颜滤镜。现在各种各样的直播、视频App层出不穷,美颜滤镜的需求也越来越多。为了回馈开源,现在我把它放到了GitHub上面,感兴趣的朋友可以去下载。下面将主要介绍实现美颜滤镜的原理和思路。2. GPUImageGPUImage是一个开源的基于GPU的图片或视频的处理框架,其本身内置了多达120多种常见的滤镜效果。转载 2016-05-16 15:46:58 · 3465 阅读 · 0 评论 -
用openAL播放ffmpeg解码的buffer突然加速问题
问题重现如果你已经研究了一段时间的openAL或者下载过大量openAL相关的代码,那么你应该知道,openAL的播放模式是将一个个unsigned char *格式的数据添加到一个队列中,然后逐步播放。 当用ffmpeg将音频文件解码成一帧帧的数据后,填充到openAL的队列当中。 因为是边解码边播放,而且解码速率远远大于播放速度,因此openAL的队列中会堆积大量的buffer。这也原创 2016-05-25 09:16:39 · 1331 阅读 · 0 评论 -
CADisplayLink的调用足够精确吗?
当CADisplayLink 以特定的模式注册到runloop之后,每当屏幕需要刷新的时候,runloop就会调用CADisplayLink绑定的target上的selector。对于iOS设备来说刷新频率就是60HZ,也就是说selector的调用是每秒60次。但是CADisplayLink的调用真的足够精确吗?因为我们知道,fps这个东西可不是一成不变的!我在selector中写了下面一些代码:原创 2016-07-22 09:59:09 · 1031 阅读 · 0 评论 -
Method Swizzling的各种姿势
因为Objective-C的runtime机制, Method Swizzling这个黑魔法解决了我们实际开发中诸多常规手段所无法解决的问题, 比如代码的插桩,Hook,Patch等等. 我们首先看看常规的Method Swizzling是怎样用的, NSHipster有一篇介绍基本用法的文章Method Swizzling, 我们就先以这篇文章中的示例开始说起吧:转载 2016-08-29 08:45:32 · 695 阅读 · 0 评论 -
Category能否给已有类添加新的属性
先说结论。常规category是用来添加函数的,并不能添加属性。但是利用runtime中objc_setAssociatedObject等方法可以生成关联对象,进而实现添加属性的需求。接下来上代码。.h文件#import <UIKit/UIKit.h>@interface UIView (something)@property (nonatomic,copy)NSString *somethin原创 2016-08-20 15:39:32 · 484 阅读 · 0 评论 -
iOS 中级面试题
半年前在知乎浏览到一个帖子,是关于如何面试iOS工程师。由于当时公司正在招聘iOS工程师,自己也面试了不少同学,就饶有兴致的把自己的面试问题清单贴了出去,却意外的引来了不少关注。还有不少同学认真回答并将答案私信于我交流的,还有求隐藏关卡的:(。由于工作太忙,私信和评论后面都没怎么回复,这里一并做下总结回复:p 一份面试题的意义 — 我把收到的私信和一百多条评论都仔细读了遍,发现大家之所以会转载 2016-10-12 13:20:22 · 1202 阅读 · 0 评论 -
block 的ARC和MRC中的区别
block在ARC和MRC中的声明引用有些区别. /** block可以存储在栈中,也可以在堆中 默认存储在栈中,不需要管理内存 存储在堆中的block会对block进行retain操作 */ //(MRC)block在堆中时,不想对block进行retain操作,前面加__block //(ARC)前面加__we转载 2016-10-12 13:12:40 · 1043 阅读 · 0 评论 -
gcdasyncsocket address already in use
找好久找到终于找到这个Current head of GDAAsyncUdpSocket does not (also) set SO_REUSEPORT (it just does ADDRESS, which is quite enough for TCP).I just popped in a quick fix:https://github.com/dirkx/原创 2016-09-22 10:25:02 · 1645 阅读 · 0 评论 -
使用SDWebImage和YYImage下载高分辨率图,导致内存暴增的解决办法
最近,收到朋友求助,说是有个控制器,一进去就crash,而且手机非常的烫,用instrument跑了跑,发现内存暴增几百兆;如图: 图中可以看出,内存暴增的罪魁祸首是YYImage,再进一步定位问题,如图: 现在已经可以很清楚的知道,具体是哪些代码导致内存飙升的,这个方法“YYCGImageCreateDecodeCopy”,主要是对转载 2016-09-21 16:55:49 · 1434 阅读 · 0 评论 -
iOS手机摄像头测心率
最近在封装一个手机摄像头测心率的模块,搞得精神各种紧张,导致吃饭、路上、做梦,甚至都在想这个东西,就在刚刚终于搞完了,写个文章庆祝一下。原理简单介绍一下,网上可以查到很多关于手机测心率的这种项目,大概就是:把手指放在摄像头和闪光灯上,通过手指处脉搏跳动充血导致的细微颜色变化来确定心跳波动,确定波峰波谷,根据两个波峰之间的时间差来确定瞬时心率。思路首先,采转载 2016-09-21 16:54:23 · 1326 阅读 · 0 评论 -
组件化架构漫谈
前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目。在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构。当然不是直接拿来照搬,还是要根据公司具体的业务需求设计架构。在学习组件化架构的过程中,从很多高质量的博客中学到不少东西,例如蘑菇街李忠、casatwy、bang的博客。在学习过程中也遇到一些问题,在微博和QQ上和一些做转载 2016-10-09 08:38:26 · 3823 阅读 · 1 评论 -
UIButton实现左文字右图片
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, -image.size.width, 0, image.size.width)];[button setImageEdgeInsets:UIEdgeInsetsMake(0, button.titleLabel.bounds.size.width, 0, -button.titleLabel.bounds转载 2016-08-14 18:29:59 · 1299 阅读 · 0 评论 -
iOS去除导航栏和tabbar的1px横线
1.在自己定义的导航栏中或者设计稿中经常需要去除导航栏的1px横线,主要是颜色太不协调了去除之前的图片要去除这1px的横线,首先应该知道它是什么,在Xcode的界面调试中可以看到,它其实是UIImageView来的找到横线是什么了···其实这是navigationBar的shadowImage,所以只要设置它为空即可,但是设置它为空之前应该先原创 2016-09-18 08:37:31 · 646 阅读 · 0 评论 -
iOS获取本机wifi的IP地址
+(NSString *)getWifiIPAddress{ NSString *ipAddress = nil; struct ifaddrs *ifa_list = NULL; struct ifaddrs *tmp = NULL; int result; result = getifaddrs(&ifa_list); if(result == 0)原创 2016-08-13 17:28:39 · 1348 阅读 · 0 评论 -
iOS获取设备APP的UUID
+(NSString*)getUUID{ static NSString *stringUUID = nil; if(!stringUUID){ // UserDefaultから読みこんで、なかったら生成 NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSLog(@原创 2016-08-13 17:27:21 · 1927 阅读 · 0 评论 -
用Sketch和PaintCode快速得到绘制代码
作者:codeGlider 授权本站转载。在我的上一篇文章中 swift10分钟实现炫酷的导航控制器跳转动画,有一个swift logo的形状上一篇文章的动画我说的就是中间用来做遮罩的形状。它不是图片是用一段代码绘制而成的:12345678910转载 2016-09-14 09:14:58 · 1565 阅读 · 0 评论 -
PaintCode Tutorial: Bezier Paths
Learn how to create dynamic curved arrows!Welcome to our third and final part of our PaintCode tutorial series!PaintCode is a neat app where you can draw user interfaces like in Photoshop转载 2016-09-14 08:39:57 · 843 阅读 · 0 评论 -
json解析 Code=3840问题
一般说来产生这个问题常见原因有两个一、是否因为编码问题导致json字符串没有正确获取。打个断点调试一下,看data能否转成str。这种情况多是因为后台或者本地的文件编码格式有问题。比如是ascii而你是按照utf8解析。二、是否因为json本身有问题。可能json的格式不对。可以百度下bejson等验证一下。比如中英文符号等等。原创 2016-08-31 13:26:23 · 3673 阅读 · 0 评论 -
iOS不能显示英文音标问题
是否需要导入字体?否UIlabel的默认字体已经能显示英文音标。为啥不能正确显示?首先,请确保你请求到的数据是正常编码的能在txt里正确显示的数据。你可以在xcode中NSLog一下,看输出是否为正常的英文音标。如果不是,让后台的小哥把音标编好码。比如utf8。貌似ASCII是不行的(可能通过某种转换后也可以)原创 2016-08-31 13:14:16 · 1535 阅读 · 0 评论 -
Unable to add App ID because the '10' App ID limit in '7' days has been exceeded解决办法
出现原因根据这句提示,其实也差不多能理解,它说不能添加AppID因为超出了7天内10个AppID的限制。也就是说,现在苹果公司应该是对真机调试做出了限制(不知道和xcode版本有没有关系,因为我的是最新的),限制7天内值允许10个app进行真机运行。解决方法其实大概也能想到- -,因为它只是对id做了限制,为了你不要创建出大量的ID出来,即bundle ID,但是它并不能识别出你的代码到底是啥,变还原创 2016-04-29 16:52:02 · 4099 阅读 · 4 评论 -
"To use this device with Xcode, unlock the device and choose "Trust".
真机调试的时候遇到了如题的问题 显而易见的,根据英文我们可以很清楚的得知,解锁设备然后选择信任,就可以了。 我解锁了设备,看到提示是否信任,选择了信任,RUN。 “To use this device with Xcode, unlock the device and choose “Trust”. ??? whaaaat? 我又仔细看了一遍提示,“要想使用这个设备,解锁它选择信任”。原创 2016-04-10 22:41:52 · 7950 阅读 · 0 评论 -
nil、Nil、NULL、NSNull的区别
nil、Nil、NULL、NSNull的区别nil:解释:nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象。(指向一个对象的空指针) 举例:NSURL *url = nil;Nil:Nil 是 ObjC 类类型的书面空值,对应 Class 类型对象。(指向类的空指针) 举例:Class class = Nil;NULL:解释:指原创 2016-04-12 16:59:08 · 512 阅读 · 0 评论 -
ios开发技巧之tableView去掉多余的空行分割线 自定义cell分割线
如何去掉tableView多余的空白行分割线?我们经常会遇到下面的问题,tableView表视图上面的内容不是很多,但是 tableView 却帮忙把 整个屏幕都用 空白行分割线占满了:如下图:代码如下: view sourceprint?01.//02.// TableViewController.m转载 2016-03-16 14:36:57 · 846 阅读 · 0 评论 -
iOS集成极光推送,绕过一些坑
最近公司要求把维护期的项目都集成极光推送,集成期间遇到一些小坑,特此在这总结!极光推送能干嘛?1.为 JPush Server 上报 Device Token,免除开发者管理 Device Token 的麻烦2.支持iOS APNs推送3.前台运行时,可接收由JPush下发的(透传的)自定义消息4.灵活管理接收用户:Tag(标签分组)、Alias(用户别名)、Regis转载 2016-02-26 13:12:54 · 1565 阅读 · 2 评论 -
Missing iOS Distribution signing identity for XXXXXX问题
问题描述今天准备打包上传AppStore,结果Xcode报以下错误:Missing iOS Distribution signing identity for XXXXXX查看证书后发现,Develop证书和Distribution证书都提示“此证书的签发者无效”。什么是AppleWWDRCA证书?搜索资料发现,原因是AppleWWDRCA (A原创 2016-02-17 10:21:50 · 2602 阅读 · 0 评论 -
tabbaritem的字体颜色设置
//设置文字的样式 NSMutableDictionary *textAttrs = [NSMutableDictionarydictionary]; textAttrs[NSForegroundColorAttributeName] = [UIColorcolorWithRed:0.859 green:0.867blue:0.192 alpha:1.0原创 2016-03-03 14:00:38 · 1014 阅读 · 0 评论 -
在iOS8系统下,UITabbar上的item自定义背景色和图片问题
http://blog.sina.com.cn/s/blog_64cfe8f00102v0yn.html在iOS8系统下,UITabbar上的item自定义背景色和图片,初始设置了红色没效果系统默认颜色-蓝色解决方法://选择的图片 UITabBar *tabBar = self.tabBar; UITab转载 2016-03-03 13:45:17 · 419 阅读 · 0 评论