自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

郭晓东的专栏

IT工匠——只为更精致的产品

  • 博客(257)
  • 资源 (17)
  • 收藏
  • 关注

原创 iOS区分不同版本URL schema

iOS项目开发中,同一个APP,在打包时,通常有三种版本:mobile版本,inhouse版本,App Store版本。前者用于程序员debug,inhouse用于测试同学、产品同学和公司其他同学的安装,最后的App Store则是发布版本。三个APP只是bundleID不同,证书不同。功能是完全一致。同一个设备上可安装三个APP,有些情况会给开发调试造成困扰,比如:APP带有第三方登录功能,用mobile版本APP登录,调起微信,授权后返回。由于mobile,inhouse,App Store三个APP都

2017-06-14 16:04:17 3401

原创 [算法]iOS 视频添加水印,合成视频两种方案(整体渲染和分割渲染)

现手机里有一段视频,通过APP给他添加一个水印。iOS提供了在视频上添加layer的接口,添加一个水印还是很方便的(添加水印)。添加完水印有一个渲染过程,在手机这种设备上还是比较慢的,比如:对1分钟的高清视频(960x540)进行渲染需要20秒左右。如何在现有API基础上提高渲染速度,提升用户体验,成了问题。笔者发现两种渲染方法: 先看图,这有一个6秒的视频,我抓了四张关键帧。只在第2,3两张关键帧上添加字幕(一个关键帧代表1.5秒。所以,两个关键帧就代表是3秒时长)

2017-05-25 14:49:40 6434 1

原创 [经验]tableview的contentSize默默自己在变。

项目中遇到一个诡异的问题:tableview的contentSize在滚动的时候自动在变小。这里先说一下项目环境:UIViewController有个tableview,可以通过上拉加载,实现加载更多数据。在一日测试中发现,一直上拉,上拉到第三页的时候。页面反而滚动到了顶部惊讶。上拉加载更多,结果应该是tableview显示底部数据,contentoffset应该是一个比较大的值。现在却弹回去了。看看输出日志

2017-05-15 19:02:51 4382

原创 scrollRectToVisible 无效的两个原因

除了UIScrollView的ContentSize的width或者height是0的原因外,可能还有一个原因就是UITableview的contentInset是负值,比如:self.tableView.contentInset = UIEdgeInsetsMake(-5, 0, 0, 0);删除这个contentInset或者inset是正值,滚动到顶部都可以生效

2017-05-05 11:49:45 3880

翻译 iOS返璞归真,译文系列——UIViewController

UIViewController懒加载他的view。第一次访问视图属性加载或创建视图控制器的视图。不是所有的“will”回调方法都只与“did”回调方法配对

2017-03-16 15:19:20 1927

翻译 iOS返璞归真,译文系列——UIScreen

UIScreen一个uiscreen对象定义了一个基于硬件的显示相关的属性。iOS设备的主屏幕和零个或多个连接的屏幕。一个TVOS装置具有电视连接到设备的主屏幕。使用此类获取连接到设备的每个显示器的屏幕对象。每个屏幕对象定义关联显示的边界矩形和其他有趣的属性,如它的亮度。概要        在iOS 8之前,屏幕的边界矩形总是反映相对于肖像定位屏幕尺寸。旋转设备的景观或倒置的方向并没有改变边界。在

2017-03-16 15:18:33 942

翻译 iOS返璞归真,译文系列——UIWindow

UIWindow        UIWindow对象提供app界面的背景,和重要的事件响应交互。Windows本身没有任何可视的表现,但它对view的呈现起着关键作用。每一个view显示在屏幕上,其实是附在一个window上,每个window与应用程序中的其他window无关。应用程序收到的事件,最初被转发到相应的window对象上,然后将这些事件转发到相应的view中。Windows与view

2017-03-16 15:18:04 1303

翻译 iOS返璞归真,译文系列——UIView

UIView        UIView 是定义了屏幕上一块矩形区域,并管理着这块区域上内容的UI界面。概要        在运行时,view对象处理矩形区域上所有内容的渲染,并处理交互。UIView类本身提供了基本的填充背景色的能力。更复杂的view可以通过集成UIView或者实现一些必要的drawing方法和event-handing代码。UIKit架构也提供了一系列标准UIView的派生类,

2017-03-16 15:17:40 1323

转载 【技巧】多行label AutoLayout 自适应高度。

多行label 高度自适应

2017-03-15 18:00:15 3346

原创 移动互联网开发团队工作管理经验

● 做事情替别人想一步;仅需一步,不能多也不能少。 ● 别请假,一个人请假影响不止一人。 ● 项目经理不是技术最牛逼的,但一定是最能聚拢人心的。 ● 不要说“技术实现不了”,实现只是时间问题。 ● 产品要强势,要多了解产品逻辑(产品经理拿的工资也不少啊) ● 产品经理、技术、UE、UI和测试都要以产品为中心。 ● 客户端轻量化,重Server。

2017-03-13 15:44:04 1849

原创 UIScrollView频道滑动(授人以鱼,不如授人以渔)

内容型APP(比如新闻,视频,汽车类型),通常采用多个页面(频道)滑动;另外,自动滚动的焦点图用到比较多的。本文简单介绍使用UIScrollView实现上述功能的原理,并附部分代码。无论是频道的滑动,还是焦点图自动滑动,都是基于UIScrollView的特性,viewController 实现UIScrollView的代理,并做一些控制即可。

2017-03-07 17:19:38 1091

原创 iOS识别http是否使用了代理(proxy)

有些APP已经能精确识别:当前WiFi连接失败,是不是由于http代理引起的,已便得到更准确的用户提示,比如:

2017-01-18 16:22:04 9442 1

原创 【经验】清除appIcon的推送数量(badgeNumber),但是在系统通知栏保留推送通知的方法

以下文字转载自:http://www.itdadao.com/articles/c15a380661p0.html一、2017-10-12号更新: iOS 11 此功能依然好用!!!直接对applicationIconBadgeNumber赋值为-1就行了。这行代码仅仅对iOS 11生效。[UIApplication sharedApplication].applicationIconBadgeN

2017-01-18 15:22:53 11370 1

原创 放在下一个runloop执行,保证当前执行正确

正常逻辑:代码行2执行完,执行代码行3.可以达到预期效果。异常逻辑:代码行2是个数据处理(黑盒)。并没有立即返回一个错误返回一个错误, notifyError。但是代码还是行代码行3了。这就是bug了比较low的解决办法有:performSelect或者添加flag等。比较优雅的解决办法是放到下一个runloop执行这样即便代码行2返回错误,但是,需要执行完代码行3才结束当前runloop。所以,在正常逻辑后,再出现异常,一般代码可以处理的。

2017-01-03 10:57:36 2782

原创 使用AVPlayer播放m3u8视频时,实现视频截图

最近需要一个对m3u8文件的截图,但是搜索一段时间后发现方法都类似,但都不成功。经过测试该方法:普通的mp4和mov格式视频可以通过下面的方法获取截图。但是m3u8文件则不行,总提示错误网上查阅资料后,可以使用AVPlayerItemVideoOutput的[AVPlayerItemVideoOutput copyPixelBufferForItemTime:itemTimeForDisplay:]来实现,方法如下:

2016-12-12 00:00:44 34001 2

原创 多个label,可变长情况下使用Masonry

常见的masonry的使用是比较简单,可应付一些常见的布局。但有些布局是动态的,则需要一些masonry和自动布局的技巧,直接上图,如何实现图片中cell的布局。下图中,播放量可变长(必须显示完整);绿底的是“出品人名称”超长显示...;置顶icon必须跟在出品人后面,但不能超过右侧海报图的left

2016-11-24 11:33:21 10093

原创 iOS 项目整体是竖屏,个别页面支持横屏

最近在做一个视频APP,工程整体是竖屏的,如下图,播放器需支持横屏。在转屏的过程遇到很痛苦的问题。[UIApplication sharedApplication].statusBarOrientation = self.UIInterfaceOrientationLandscapeLeft; 未生效设置完后,还是UIInterfaceOrientationPortrait。查阅资料是UITabbarController的方法- (BOOL)shouldAutorotate没有返回NO。这是因为当UIvie

2016-10-24 14:51:33 6090

原创 在多线程情况下,block比delegate有优势。

左边的SHVideoPlayerCaption 代理了播放器的方法叫:messageCallBack(RetObtainSubtitle)ret 如图右边函数。播放器调用messageCallBack是在并发线程。dealloc是在主线程执行。那么,在这样的多线程情况下:如果:执行顺序是1-> 3 -> 2 -> 4。那么第4步则会crash了。Block则可解决这个问题,block会持有了self省的走dealloc了

2016-09-29 19:12:36 1579

原创 HTTPS协议详解(五):HTTPS性能与优化

1、HTTPS性能损耗前文讨论了HTTPS原理与优势:身份验证、信息加密与完整性校验等,且未对TCP和HTTP协议做任何修改。但通过增加新协议以实现更安全的通信必然需要付出代价,HTTPS协议的性能损耗主要体现如下:(1).增加延时分析前面的握手过程,一次完整的握手至少需要两端依次来回两次通信,至少增加延时2* RTT,利用会话缓存从而复用连接,延时也至少1* RTT*。(2).消耗较多的CPU资源

2016-09-08 12:25:17 16680 1

原创 HTTPS协议详解(四):TLS/SSL握手过程

本文大部分内容摘自:http://www.wosign.com/faq/faq2016-0309-04.htm 尊重知识产权,转载注明Wosign----------------------------------专栏导航----------------------------------HTTPS协议详解(一):HTTPS基础知识 HTTPS协议详解(二):TLS/SSL工作原理HTTPS协议...

2016-09-08 12:24:28 88064 14

原创 HTTPS协议详解(三):PKI 体系

本文大部分内容摘自:http://www.wosign.com/faq/faq2016-0309-03.htm 尊重知识产权,转载注明Wosign----------------------------------专栏导航----------------------------------HTTPS协议详解(一):HTTPS基础知识 HTTPS协议详解(二):TLS/SSL工作原理HTTPS协议...

2016-09-08 12:24:12 32342 9

原创 HTTPS协议详解(二):TLS/SSL工作原理

HTTPS协议的主要功能基本都依赖于TLS/SSL协议,本节分析TLS/SSL协议工作原理。 TLS/SSL的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。

2016-09-08 12:23:52 32164 3

原创 HTTPS协议详解(一):HTTPS基础知识

HTTPS基础知识:HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。 HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生。 TLS/SSL全称安全传输

2016-09-08 12:22:55 64808 16

转载 为什么RSA 公钥指数(e=65537)

1. 引言学术界普遍认为绝对不能选用e=3作为RSA公钥指数,就好像说我们再也不能用md5一样。但实际上,md5今天仍然广泛使用。一个密码算法在理论上被攻破,并不等于实践中就一定会有安全风险。比如,md5作为一种密码哈希函数,理论上它必须满足三个性质:(1) 输出的均匀分布性;(2) 抗碰撞攻击;(3) 抗原像攻击。当王小云发现了md5不满足性质(2)之后,理论上md5算法就被攻破——md5将从“

2016-09-07 17:51:26 24974

原创 [经验]iOS app整体是竖屏(横屏),某个页面却支持横竖屏

一个app 整体上是横屏,即info.plist中设置如下图。但是在某个页面需要支持横屏。通常在进入那个页面的时候会crash。2016-08-30 17:38:30.224 Video[991:372909] *** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', re...

2016-08-30 18:02:36 6619 1

原创 【精】客户端(iOS、Android)/Server,APP内部的通信协议,跨平台方案

通常Server通过一些http协议,可以告诉APP需要的展示内容图片,文字。市面上很多新闻APP,点击一个焦点新闻,APP跳到相应的频道或专题。前者是Server——>APP通信,后者是APPAPP内通信。进程间通信        以iOS平台为例,进程间通信IPC,可以通过自定义URL Schema,然后APP实现-(BOOL) application:(UIApplication *) op

2016-08-12 15:06:50 6909

原创 网络安全-【数字证书,证书链】,为什么12306订票要弹信任证书

如何验证一个证书C是不是可信任的呢?需要此证书颁发者B的公钥来验证C证书的合法性。颁发者B的公钥又存在于B的证书中。那么问题来了,又怎么去验证B的证书合法性呢。继续这样追究下去没有个头啊。我们用iOS开发中常见的证书来说明这个追究的过程。 我客户端申请了一个APP证书叫iOS Dev。那么Apple是如何验证这个APP是合法的呢。读者可根据红色的线,从左往右理解:根据iOS Dev的签发者信息,找到签发者是Apple Worldwide Developer Relations Certifi

2016-08-10 10:12:50 2723

原创 【精】Runloop 深入浅出,综合解答

Runloop 概述1、与下面知识相关:系统级:GCD,mach kernel,block,pthread应用层:NSTimer,UIEvent,自动释放池,NSObject(NSDelayedPerforming),NSObject(NSThreadPerformAddition),CADisplayLink,CATransition,CAAnimation,dispatch_get_main_

2016-06-29 16:38:08 8958

原创 iOS Archive 后进入other items,generic XCode Archive

部分内容摘自http://blog.csdn.net/u010069091/article/details/48386865【问题】用XCode Archive后没有列入到以往的app icon下,却进入了other items,切不能提交APP store。Type:generic XCode Archive。如图:【分析】在finder中打开刚刚失败的Archive,发现多了一个文件夹,文件夹

2016-05-26 18:50:54 6505

原创 【技巧】UITableView 在UITableViewStylePlain模型下,取消headerView的黏结性,不浮动

UITableView使用UITableViewStylePlain样式时,section的header与footer会在滚动过程中固定在顶部,这个交互很不错。如果要阻止这个交互,那么办法有四个: 那么如果section中的cell为空,它是不会浮动的;基于这个原理,可以巧妙的将header单独拎出来。如图2:试想分拆后的每一个section,只有第一个带有header,且不会浮动。为了扩展性,将footer也算进去。将原始的section数量乘以3,得到header的section,cel

2016-04-01 10:36:46 6447

原创 获取网络gif时候报错 <Error>: ImageIO: _CGImagePluginInitGIF malformed GIF frame#0

最近在iPad项目中需要获取gif图片,并展示(如何展示gif【点击】)。但是遇到下面的问题。代码如下: NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://photocdn.sohu.com/tvmobilemvms/20160202/14544076957794636.gif"]];//launchContentItem.contentUrl UIImage

2016-03-04 17:51:44 1874

原创 汉字编码之GBK编码(附完整码表)

继续字符编码的学习。今天介绍一下GBK(汉字内码扩展规范),GB 2312 GB18030。引用网友的话可以概括一下:GBK和UTF8的区别:GBK就是在保存你的帖子的时候,一个汉字占用两个字节。。外国人看会出现乱码,此为我中华为自己汉字编码而形成之解决方案。UTF8就是在保存你的帖子的时候,一个汉字占用3个字节。。但是外国人看的话不会乱码,此为西人为了解决多字节字符而形成之解决方案。GBK编码是GB2312编码的超集,向下完全兼容GB2312。GB18030编码向下兼容GBK和GB2312,GB

2016-03-04 12:21:24 824013 7

原创 iOS 后台运行一段时间(不是地图,音乐类型APP)

iOS 后台运行一段时间(不是地图,音乐类型)。iOS 通常是不能在后台运行的,尤其是用户点击锁屏键,APP进入后台,网络立马断开等。如何解决这个问题呢?在APP进入后台,APP怎么争取一些时间来“善后”。代码如下:注:需要定义一个属性 UIBackgroundTaskIdentifier _bgTask;该代码可以自定义后台多长时间自动结束任务。

2016-03-02 16:24:38 2822

原创 iOS 适配固定边距内容拉伸

自从除了iPhone分辨率不再是320x480了。需要开发者适配屏幕,交互设计师通常是要求两边边距不变,内容拉伸。解决办法就是:以iPhone的分辨率为参考,其他屏幕相对拉伸。

2016-02-23 17:32:40 2042

原创 UIImage实现gif文件播放

iOS 中播放gif文件可以简单使用UIImage的这个方法:[UIImage animatedImageWithImages:images duration:duration]

2016-02-23 11:08:01 5587 1

原创 OC 在任意页面,隐藏其他页面的键盘

一、当前viewController隐藏本页面的键盘 很容易。直接调用 [textfield resignFirstResponder]即可。二、目前遇到一个需求 ControllerA出来时候,隐藏当前top 任意view的键盘。那么可以使用这个[[[UIApplication sharedApplication] keyWindow] endEditing:YES];这是有根据的,OC sdk中有一个UIView的类别,就是endEditing。可以参考UITextField

2016-02-22 15:33:32 1951

转载 NSTimer会是准时触发事件吗

NSTimer会是准时触发事件吗  答案是否定的,而且有时候你会发现实际的触发时间跟你想象的差距还比较大。NSTimer不是一个实时系统,因此不管是一次性的还是周期性的timer的实际触发事件的时间可能都会跟我们预想的会有出入。差距的大小跟当前我们程序的执行情况有关系,比如可能程序是多线程的,而你的timer只是添加在某一个线程的runloop的某一种指定的runloopmode中,由于多线程通常都是分时执行的,而且每次执行的mode也可能随着实际情况发生变化。

2016-02-18 10:19:14 1875 1

转载 IOS KVC(键值编码)模式

在IOS的中,没有绝对的私有,包括方法和变量。私有方法通过类实例无法直接访问,但因为有"编译时运行"机制,我们可以通过类似perfromSelectoe的方法来访问私有方法。而IOS中的私有变量通过所谓的KVC模式也是可以访问的。下面特酷吧整理了IOS KVC模式的使用方法。 KVC模式就是key-value coding(键值编码),它的原理是使用字符串标识,间接访问对象属性。关键方法在NSKeyValueCodingprotocol中定义。KVC支持类对象和内建基本数据类型。我们主要使用到它的两

2016-02-18 10:18:03 1817

原创 iOS [[UIDevice currentDevice] systemName]的返回值

无论是iPhone iPad ,还是模拟器上。[[UIDevice currentDevice] systemName]的返回值总是iPhone OS。现在做一个iPad项目,需要自定义UA,该UA包含了systemName的字段。结果H5那边当作是iPhone客户端了。H5上的视频只有声音,没有画面。 后来,H5的同事说。是UA中包含了iPhone字样,他们当做是iPhone客户端来适配。iPhone客户端会一直展示海报图,并吊起全屏播放器。 查阅StackOverflow

2016-01-29 14:39:46 3372

原创 iOS设置自定义UA [NSUserDefaults standardUserDefaults] registerDefaults:@{ @"UserAgent":

有些时候,考虑到兼容性,只对某些webview 实施自定义UA。那么,上面的办法显然不行了。+ (void)initialize在类创建的时候,只执行了一次。也就是所有的webview都带有自定义UA。那么,针对某一个webview实施自定义UA可以这么弄。这几个方法一定要是静态方法,要不然设置UA不生效。

2016-01-28 11:26:30 7636 2

build-protobuf-2.5.0.sh

Xcode 5 / iOS 7配置ProtoBuf脚本

2015-06-22

树tree、动态数组dyArray、hashMap、拼图算法

树:采用C语言实现 动态数组dyArray:采用C语言实现 hashMap,采用链表实现hash 拼图算法:采用二叉树结果拼图算法

2014-08-15

iOS平台ProtocolBuf说明

简单说明protobuf的使用,编码,使用!

2014-03-11

30行实现iOS下gif显示(xcode)

30行实现iOS下gif显示(xcode)完美实现gif的播放。

2013-11-05

core-data和sqlite3性能对比demo

◆ Core Data是一个功能强大的层,位于SQLite数据库之上, 它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互 ◆ 这样看来它跟Sqltie3在速度上是没有可比性的。Sqlite3肯定要快! ◆ 但是快多少?还有那些优劣,这是我们要研究的!

2013-06-18

volatile,nonatomic和atomic关键字测试

主要研究四种变量(属性)的存取速度. volatile nonatomic atomic和正常变量

2013-05-28

utf8,unicode,gbk,base64实现

utf8,unicode,gbk,base64实现,温习一下这个过程。

2013-03-25

urlencode urldecode实现

urlencode urldecode实现,在xcode里使用c++混编

2013-03-21

多叉树解析关键字,滑动引擎

利用多叉树解析关键字,另外还包括自制滑动引擎的实现。

2013-03-20

iOS 显示汉字的Unicode和UTF-8编码

iOS 显示汉字的Unicode和UTF-8编码

2013-03-10

网络传输文本,urlEncode和decode的实现。

网络传输文本,urlEncode和decode的实现。 在vs 2005上通过实验。

2013-03-04

ios 简单绘制文本,线条,图片,动画,按钮

ios 简单绘制文本,线条,图片,动画,按钮

2013-03-04

iOS Tableview

简单的Tableview,也就是我们平常用的list

2013-03-04

symbian v3 五子棋游戏——原创

经典游戏五子棋,Symbian s60 第三版。 绝对原创。 你不一定下得过它哦。 支持源代码开发!

2010-06-30

symbian半透明例子(原创,容易理解).rar

包含 1.在程序里使用直接引用汉字显示到屏幕。 2.图片半透明,按上下键查看效果。

2010-03-26

visual studio2005配置qt环境.doc

看看怎么在visual studio 2005上配置Qt运行环境。

2009-06-27

在VC下编译运行MiniGUI程序

经过 配置minigui可以在 visual studio 下运行

2009-03-19

空空如也

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

TA关注的人

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