iOS: JS和Native交互的两种方法

摘要: 背景:UIWebView: iOS 用来展示 web 端内容的控件。1. 核心方法:- (NSString*)stringByEvaluatingJavaScriptFromString:(NSString *)script;script 就是 JS 代码,返回结果为 js 执行结果。 比如一个 J... 阅读全文
posted @ 2014-10-08 16:10 VicStudio 阅读(4148) 评论(0) 推荐(0) 编辑

iOS Web开发激活css的active伪类

摘要: 最近在做一个资讯客户端,用到UIWebview展示一些网页内容,本来想做一个简单的按压效果,发现在css中设置active属性一直不管用。查阅了一下资料,今天发现,要让css active伪类生效,只需要给这个元素的touchstart/touchend绑定一个空的匿名方法即可成功。下面简单以一个文... 阅读全文
posted @ 2014-09-13 17:26 VicStudio 阅读(1649) 评论(0) 推荐(0) 编辑

iOS使用自定义字体的方法(内置和任意下载ttf\otf\ttc字体文件)

摘要: 最近做了个有关阅读的应用,使用了自定义字体,学习了一下这方面的知识。1.首先是最简单也普遍的做法,打包内置字符库文件:把字体库文件添加到工程,如font1.ttf添加到工程,然后在工程plist添加一项Fonts provided by application,这是个数组,然后添加key item1... 阅读全文
posted @ 2014-09-08 11:19 VicStudio 阅读(12175) 评论(3) 推荐(0) 编辑

线程同步有关锁的术语介绍

摘要: 在多线程中,锁是一种最常用的同步工具,下面详细讲讲带有锁字的一些术语:1.锁的具体实现原理:(1).互斥锁(Mutex)用一个“互斥锁”的对象,任一时刻,只有一个线程能访问这个对象,也就是把代码分成一个个临界区域。在Linux下伪代码如下:pthread_mutex_t mutex;pthread_mutex_init (&mutex, NULL); /*初始化锁*/pthread_mutex_lock(&mutex); /*获取互斥锁,也就是加锁*/... /*临界区*/pthread_mutex_unlock(&mutex); /*解锁互斥锁*/如图,中间的临界区就 阅读全文
posted @ 2013-10-21 01:41 VicStudio 阅读(1521) 评论(2) 推荐(0) 编辑

iOS LBS相关: 定位和中国特色的位置偏移纠正

摘要: LBS模块,首先当然是定位,获取自己所在的位置。主要用到的就是CLLocationManager,实例一个,然后调用startUpdatingLocation即可。其中可以指定精度CLLocationAccuracy等。设置delegate后,它有两个重要的回调:- (void)locationMa... 阅读全文
posted @ 2013-10-16 00:50 VicStudio 阅读(2483) 评论(0) 推荐(0) 编辑

马赛克算法及iOS代码实现

摘要: 之前做了一下相关涂鸦的东西,发现图片处理挺好玩的,就先讲讲马赛克的实现吧。 放大马赛克图片可以看到,可以看到一个个单色的小正方形。所以马赛克其实也就是把某一点的色值填充了它一定范围内的一个正方形,这样看起来就会模糊,但整体还是有一定原来的样子。如图,一张图片可以认为是9*9个色值组成的位图,进... 阅读全文
posted @ 2013-10-09 01:00 VicStudio 阅读(8108) 评论(8) 推荐(2) 编辑

iOS制作Static Library(静态库),实现多工程的连编

摘要: 在iOS开发中,我们会发现一些偏底层或基础代码是直接可以复用的,当我们换一个项目,改变的只需要是偏上层的业务逻辑代码,所以我们可以把这部分基础代码制作为一个静态库static library,并不断扩展,这样我们重新开发一个新项目,就可以直接引进这个静态库,再添加上层的业务逻辑代码即可,会大大提高我们开发的效率。下面以一个例子说明制作静态库和相关导入的必须操作。假设这个静态库为Commom,新工程为Example。首先,新建一个静态库,如图:点完成后就可以生成一个静态库了。然后把需要添加的基础代码添加就可。然后我们像平时一样建立的工程Example,把Commom.xcodeproj工程直接拖 阅读全文
posted @ 2013-09-29 19:33 VicStudio 阅读(1409) 评论(0) 推荐(0) 编辑

iOS由ImageIO.framework实现gif的系统解码

摘要: 首先先简单介绍一下gif的几个算是术语吧:frame(帧):一个gif可以简单认为是多张image组成的动画,一帧就是其中一张图片image.frameCount(帧数): 就是一个gif有多少帧loopCount(播放次数):有些gif播放到一定次数就停止了,如果为0就代表gif一直循环播放。delayTime(延迟时间):每一帧播放的时间,也就是说这帧显示到delayTime就转到下一帧。所以gif播放主要就是把每一帧image解析出来,然后每一帧显示它对应的delaytime,然后再显示下一张。如此循环下去。下面是纯粹实现由系统提供的解码:-(void)decodeWithFilePat 阅读全文
posted @ 2013-09-26 00:02 VicStudio 阅读(2811) 评论(4) 推荐(1) 编辑

KVC和KVO实现监听容器类(数组等)的变化

摘要: KVC,即Key-Value Coding,键值编码,简单地说,就是可以由key获取一个object对应的property。举个例子,如果一个对象object,它有一个属性item,你可以通过valueForKey也可以通过object.item来获取它,同时它支持纵调用,即假如object有个属性是个item,item有个属性score,可以通过@“item.score”获取,setValueForKey同理。 CGFloat valueScore,score,valueTotal,total; TestObject *object = [[TestObject alloc] in... 阅读全文
posted @ 2013-09-25 01:01 VicStudio 阅读(5544) 评论(0) 推荐(3) 编辑

Dynamicaly Typed(动态定型), Objective-C Runtime Programming

摘要: Objective-C跟C最大的差别,应该是动态定型(dynamicaly typed),支持在运行时动态类型决议(dynamic typing),动态绑定(dynamic binding)以及动态装载(dynamic loading)。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类,而C语言编译时静态绑定,甚至很多时候你没定义的方法直接就编译不过。Message Messaging是Object-C动态定型的实现方法。当调用一个类方法时,系统就给这个对象发消息: objc_msgSend(receiver, selector, arg1,... 阅读全文
posted @ 2013-08-26 23:18 VicStudio 阅读(1345) 评论(1) 推荐(0) 编辑