iOS
文章平均质量分 58
args_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
iOS app旧貌换新颜(一)Launch Page让Logo"飞"出屏幕
文/一缕殇流化隐半边冰霜(简书)转自 http://www.cocoachina.com/ios/20160603/16595.html前言当今是个看脸的世界,一个app的颜值可能会决定用户的使用次数,icon的颜值更可能决定了用户是否回去下载,如果太丑,放在手机桌面都难看,那用户很可能就直接卸载了。所以漂亮的界面UI + 合理的用户体验UX/UE也会很大程度决定用户的黏性转载 2016-06-12 10:28:07 · 748 阅读 · 0 评论 -
CADisplayLink的调用足够精确吗?
当CADisplayLink 以特定的模式注册到runloop之后,每当屏幕需要刷新的时候,runloop就会调用CADisplayLink绑定的target上的selector。对于iOS设备来说刷新频率就是60HZ,也就是说selector的调用是每秒60次。但是CADisplayLink的调用真的足够精确吗?因为我们知道,fps这个东西可不是一成不变的!我在selector中写了下面一些代码:原创 2016-07-22 09:59:09 · 1100 阅读 · 0 评论 -
Uber的启动画面是如何制作的
启动画面(Splash Screen)——不但给开发者们提供了一个尽情发挥、创建有趣动画的机会,也填补了App启动时从终端慢吞吞地下载数据的时间。启动画面(动态的)对于App至关重要:它可以让用户不失兴趣地耐心等待应用完成加载。尽管现在的启动画面多种多样,但很少有像Uber这般精美的。2016年第一季度,Uber的CEO发表了关于重塑品牌的策略,其中之一就是现在这个超酷的启动画面。转载 2016-08-16 09:15:46 · 1239 阅读 · 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 · 506 阅读 · 0 评论 -
setValuesForKeysWithDictionary方法的正确使用姿势
1.为什么用之前给model赋值的时候,一个一个往上写,写的贼tm烦,所以一直想找一个简单方便的方法。。。来张图感受下。2.怎么用用这个之前我是知道有这么一个方法能快捷的赋值的,但是为什么没用呢?因为它搞不好就崩。使用方法很简单: Model *item = [[Model alloc]init]; [item setValuesForKeysWithDictionary:dic];原创 2016-07-14 17:24:33 · 4375 阅读 · 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 · 1378 阅读 · 0 评论 -
iOS开发 如何在Label中显示图片-图文混排
在实际项目开发过程中,我们常会遇到一段文字中既要有图片又要有文字,例如我们经常使用的QQ、微信的聊天对话框中,表情和文字共存就是一种典型的图文混排。QQ20150827-1.png可以直接使用Quart2D,直接在Label的draw方法中画图片上去,但是这种方法成本比较高,我们推荐使用text自带的属性来做。要做到图中在文字中插入表情的效果,首先我们得来了转载 2016-06-16 17:18:54 · 1444 阅读 · 0 评论 -
如何截取scrollView里面的图片
如下- (UIImage *)captureScrollView:(UIScrollView *)scrollView{ UIImage* image = nil; UIGraphicsBeginImageContext(scrollView.contentSize); { CGPoint savedContentOffset = scrollView.con原创 2016-07-12 16:55:53 · 991 阅读 · 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 · 762 阅读 · 0 评论 -
Method Swizzling的各种姿势
因为Objective-C的runtime机制, Method Swizzling这个黑魔法解决了我们实际开发中诸多常规手段所无法解决的问题, 比如代码的插桩,Hook,Patch等等. 我们首先看看常规的Method Swizzling是怎样用的, NSHipster有一篇介绍基本用法的文章Method Swizzling, 我们就先以这篇文章中的示例开始说起吧:转载 2016-08-29 08:45:32 · 748 阅读 · 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 · 3040 阅读 · 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 · 11994 阅读 · 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 · 854 阅读 · 0 评论 -
正确使用iOS常量(const)、enum以及宏(#define)
前言:本文主要梳理iOS中如何使用常量、enum、宏,以及各自的使用场景。重要的事情首先说:在iOS开发中请尽量多使用const、enum来代替宏定义(#define);随着项目工程的逐渐增大,过多的宏定义还可能影响项目的编译速度。宏定义大家应该都不陌生,使用起来非常简单,首先我们先来看一下宏定义跟const的区别:1.宏在编译开始之前就会被替换,而const只是变转载 2016-05-30 11:21:01 · 631 阅读 · 0 评论 -
iOS实时滤镜实现--基于GPUImage。
1. 背景前段时间由于项目需求,做了一个基于GPUImage的实时美颜滤镜。现在各种各样的直播、视频App层出不穷,美颜滤镜的需求也越来越多。为了回馈开源,现在我把它放到了GitHub上面,感兴趣的朋友可以去下载。下面将主要介绍实现美颜滤镜的原理和思路。2. GPUImageGPUImage是一个开源的基于GPU的图片或视频的处理框架,其本身内置了多达120多种常见的滤镜效果。转载 2016-05-16 15:46:58 · 3584 阅读 · 0 评论 -
用openAL播放ffmpeg解码的buffer突然加速问题
问题重现如果你已经研究了一段时间的openAL或者下载过大量openAL相关的代码,那么你应该知道,openAL的播放模式是将一个个unsigned char *格式的数据添加到一个队列中,然后逐步播放。 当用ffmpeg将音频文件解码成一帧帧的数据后,填充到openAL的队列当中。 因为是边解码边播放,而且解码速率远远大于播放速度,因此openAL的队列中会堆积大量的buffer。这也原创 2016-05-25 09:16:39 · 1434 阅读 · 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 · 4342 阅读 · 4 评论 -
iOS去除导航栏和tabbar的1px横线
1.在自己定义的导航栏中或者设计稿中经常需要去除导航栏的1px横线,主要是颜色太不协调了去除之前的图片要去除这1px的横线,首先应该知道它是什么,在Xcode的界面调试中可以看到,它其实是UIImageView来的找到横线是什么了···其实这是navigationBar的shadowImage,所以只要设置它为空即可,但是设置它为空之前应该先原创 2016-09-18 08:37:31 · 737 阅读 · 0 评论 -
宏定义中的##操作符和... 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 · 1542 阅读 · 0 评论 -
iOS 中级面试题
半年前在知乎浏览到一个帖子,是关于如何面试iOS工程师。由于当时公司正在招聘iOS工程师,自己也面试了不少同学,就饶有兴致的把自己的面试问题清单贴了出去,却意外的引来了不少关注。还有不少同学认真回答并将答案私信于我交流的,还有求隐藏关卡的:(。由于工作太忙,私信和评论后面都没怎么回复,这里一并做下总结回复:p 一份面试题的意义 — 我把收到的私信和一百多条评论都仔细读了遍,发现大家之所以会转载 2016-10-12 13:20:22 · 1278 阅读 · 0 评论 -
block 的ARC和MRC中的区别
block在ARC和MRC中的声明引用有些区别. /** block可以存储在栈中,也可以在堆中 默认存储在栈中,不需要管理内存 存储在堆中的block会对block进行retain操作 */ //(MRC)block在堆中时,不想对block进行retain操作,前面加__block //(ARC)前面加__we转载 2016-10-12 13:12:40 · 1155 阅读 · 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 · 1702 阅读 · 0 评论 -
使用SDWebImage和YYImage下载高分辨率图,导致内存暴增的解决办法
最近,收到朋友求助,说是有个控制器,一进去就crash,而且手机非常的烫,用instrument跑了跑,发现内存暴增几百兆;如图: 图中可以看出,内存暴增的罪魁祸首是YYImage,再进一步定位问题,如图: 现在已经可以很清楚的知道,具体是哪些代码导致内存飙升的,这个方法“YYCGImageCreateDecodeCopy”,主要是对转载 2016-09-21 16:55:49 · 1499 阅读 · 0 评论 -
iOS手机摄像头测心率
最近在封装一个手机摄像头测心率的模块,搞得精神各种紧张,导致吃饭、路上、做梦,甚至都在想这个东西,就在刚刚终于搞完了,写个文章庆祝一下。原理简单介绍一下,网上可以查到很多关于手机测心率的这种项目,大概就是:把手指放在摄像头和闪光灯上,通过手指处脉搏跳动充血导致的细微颜色变化来确定心跳波动,确定波峰波谷,根据两个波峰之间的时间差来确定瞬时心率。思路首先,采转载 2016-09-21 16:54:23 · 1484 阅读 · 0 评论 -
组件化架构漫谈
前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目。在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构。当然不是直接拿来照搬,还是要根据公司具体的业务需求设计架构。在学习组件化架构的过程中,从很多高质量的博客中学到不少东西,例如蘑菇街李忠、casatwy、bang的博客。在学习过程中也遇到一些问题,在微博和QQ上和一些做转载 2016-10-09 08:38:26 · 3902 阅读 · 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 · 1333 阅读 · 0 评论 -
"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 · 8118 阅读 · 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 · 1422 阅读 · 0 评论 -
iOS获取设备APP的UUID
+(NSString*)getUUID{ static NSString *stringUUID = nil; if(!stringUUID){ // UserDefaultから読みこんで、なかったら生成 NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSLog(@原创 2016-08-13 17:27:21 · 2009 阅读 · 0 评论 -
用Sketch和PaintCode快速得到绘制代码
作者:codeGlider 授权本站转载。在我的上一篇文章中 swift10分钟实现炫酷的导航控制器跳转动画,有一个swift logo的形状上一篇文章的动画我说的就是中间用来做遮罩的形状。它不是图片是用一段代码绘制而成的:12345678910转载 2016-09-14 09:14:58 · 1652 阅读 · 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 · 997 阅读 · 0 评论 -
json解析 Code=3840问题
一般说来产生这个问题常见原因有两个一、是否因为编码问题导致json字符串没有正确获取。打个断点调试一下,看data能否转成str。这种情况多是因为后台或者本地的文件编码格式有问题。比如是ascii而你是按照utf8解析。二、是否因为json本身有问题。可能json的格式不对。可以百度下bejson等验证一下。比如中英文符号等等。原创 2016-08-31 13:26:23 · 3791 阅读 · 0 评论 -
iOS不能显示英文音标问题
是否需要导入字体?否UIlabel的默认字体已经能显示英文音标。为啥不能正确显示?首先,请确保你请求到的数据是正常编码的能在txt里正确显示的数据。你可以在xcode中NSLog一下,看输出是否为正常的英文音标。如果不是,让后台的小哥把音标编好码。比如utf8。貌似ASCII是不行的(可能通过某种转换后也可以)原创 2016-08-31 13:14:16 · 1613 阅读 · 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 · 550 阅读 · 0 评论 -
TestFlight被收购了,那我们怎么使用呢?
相信一部分开发者,对于Apple收购TestFlight有着比较好奇的心态,那么TestFlight在被收购后,已经再次重新正式发布,可以正常使用了,那么又有多少开发者会去使用它呢?读完Apple的TestFlight官方文档之后,已经不能阻止我的小宇宙爆发了,开始折腾了起来,大致总结有以下两点:如果可以接受10测试人员,那么就不需要提交审核,意味着不需要Apple的漫转载 2016-02-03 09:50:07 · 725 阅读 · 0 评论 -
-fembed-bitcode is not supported on versions of iOS prior to 6.0问题
问题很好解决“Xcode 7 has a ENABLE_BITCODE option to embed bitcode in apps, app extensions, and frameworks. The option is turned on by default for iOS and is mandatory for watchOS projects submitted to the st原创 2016-02-18 10:03:16 · 931 阅读 · 0 评论 -
iOS 关于枚举的使用
引言:枚举值 它是一个整形(int) 并且,它不参与内存的占用和释放,枚举定义变量即可直接使用,不用初始化.在代码中使用枚举的目的只有一个,那就是增加代码的可读性.使用:枚举的定义如下:[csharp] view plain copytypedef enum { //以下是枚举转载 2016-03-16 16:35:09 · 383 阅读 · 0 评论 -
ios开发技巧之tableView去掉多余的空行分割线 自定义cell分割线
如何去掉tableView多余的空白行分割线?我们经常会遇到下面的问题,tableView表视图上面的内容不是很多,但是 tableView 却帮忙把 整个屏幕都用 空白行分割线占满了:如下图:代码如下: view sourceprint?01.//02.// TableViewController.m转载 2016-03-16 14:36:57 · 930 阅读 · 0 评论 -
iOS集成极光推送,绕过一些坑
最近公司要求把维护期的项目都集成极光推送,集成期间遇到一些小坑,特此在这总结!极光推送能干嘛?1.为 JPush Server 上报 Device Token,免除开发者管理 Device Token 的麻烦2.支持iOS APNs推送3.前台运行时,可接收由JPush下发的(透传的)自定义消息4.灵活管理接收用户:Tag(标签分组)、Alias(用户别名)、Regis转载 2016-02-26 13:12:54 · 1647 阅读 · 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 · 2669 阅读 · 0 评论
分享