摘要:
更详细的内容可以参考官方文档《Text Programming Guide for iOS》。“Text Kit指的是UIKit框架中用于提供高质量排版服务的一些类和协议,它让程序能够存储,排版和显示文本信息,并支持排版所需要的所有特性,包括字距调整、连写、换行和对齐等。”以前,如果我们想实现复杂的文本排版,例如在textView中显示不同样式的文本,或者图片和文字混排,你可能就需要借助于UIWebView或者深入研究一下Core Text。在iOS6中,UILabel、UITextField、UITextView增加了一个NSAttributedString属性,可以稍微解决一些排版问题,但 阅读全文
随笔分类 - iOS开发
Text Kit进阶
2013-11-06 22:56 by Tracy E, 1012 阅读, 收藏,
摘要:
在上一篇文章Text Kit入门中我们主要了解了什么是Text Kit及它的一些架构和基本特性,这篇文章中会涉及关于Text Kit的更多具体应用。Text Kit是建立在Core Text框架上的,我们知道CoreText.framework是一个庞大而复杂的框架,而Text Kit在继承了Core Text强大功能的同时给开发者提供了比较友好的面向对象的API。本文主要介绍Text Kit下面四个特性:动态字体(Dynamic type)凸版印刷体效果(Letterpress effects)路径排除(Exclusion paths)动态文本格式化和存储(Dynamic text form 阅读全文
Objective-C异步编程
2013-11-06 22:54 by Tracy E, 976 阅读, 收藏,
摘要:
1. 不要阻塞主线程不管在进行iOS还是OS X开发中,主线程都只应该处理用户交互和界面布局,好的程序通常能够随时快速响应用户的操作,所以CPU密集型或者会阻塞线程的代码应该在其他位置去执行,我指的是其他线程。2. 在后台线程中执行为了不阻塞主线程,我们应该把更多的操作放到后台中去执行,只有在不得不在主线程中执行时(更新UI等)才回到主线程,GCD是最适合这种线程之间切换的://Main Threaddispatch_queue_t queue;queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispa 阅读全文
为移动Web应用创建快速响应按钮
2013-06-28 23:30 by Tracy E, 667 阅读, 收藏,
摘要:
英文原文出自 Google Deveploers《Creating Fast Buttons for Mobile Web Applications》,由XiaoYi_HD翻译,并首发于 EsoftMobile.com。如需转载,请注明译者及出处信息。背景在 Google,我们不断地突破移动 Web 应用能够达到的效果,类似于 HTML5 这类技术让我们对原生应用和 Web 应用的界线开始变得模糊。为了这个目标,我们开发了一种新技术让纯 HTML 按钮能够有更快的响应速度。这之前,我们可能只是为按钮或者其他可以点击的元素增加点击处理,如:Sign Up!使用这种方法存在一个问题就是,移动浏览器 阅读全文
将UIWebView显示的内容转为图片和PDF
2013-06-23 19:21 by Tracy E, 4366 阅读, 收藏,
摘要:
今天开发MarkEditor时要用到将 UIWebView 中显示的内容转为图片,方便转发到各个社交网络(Twiiter,Facebook,Weibo),这样内容就不受长度限制,类似于长微博。 之前关于视图转图片我知道可以通过 QuartzCore 里截图的形式,但是截图只能截取当前屏幕所显示的区域 (UIGraphicsGetCurrentContext()),而 UIWebView 的内容可能比屏幕长得多,在网上搜了一下,没有找到更好的方法,所有只用将 UIWebView 分屏截取,然后将截取的图片拼接成一张图片。- (UIImage *)imageRepresentation{ C... 阅读全文
iOS7适配之设计篇
2013-06-23 19:19 by Tracy E, 2193 阅读, 收藏,
摘要:
(注:文章简要翻译自 Apple《iOS 7 UI Transition Guide》,由于该文档为开发者预览版,并非最终文档,所以 iOS7 正式上线可能有部分不同)准备工作iOS7 带来了很多界面上的改变,如:没有边框(圆角)的按钮,半透明的工具条(UINavigationBar, UIToolBar 等),视图控制器的全屏布局等。使用 Xcode5,你就可以创建 iOS7 工程,并在 iOS7 模拟器中看看 iOS7 的界面。UIStyle从 iOS7 系统应用的改变可以看出,iOS7 这次改变不是小打小闹,是彻彻底底的变化。苹果认为之前的 UI 风格辨识度很高,但是视觉体验太不一致(c 阅读全文
Convert to Objective-C ARC
2013-06-23 19:18 by Tracy E, 1519 阅读, 收藏,
摘要:
今天在进行代码走查时,竟然发现了下面这段代码:Bad Code顿时感觉吐槽无力,虽然我反复强调内存管理问题,无非就是谁申请谁释放,利用强弱引用避免 retain-cycles,但是还是会有这样那样的问题,leaks 每次就是一片红。本来是计划等他们交易都开发完了,进行一次集体代码走查,好好给他们上一课,集中来解决内存问题。但是由于个人原因我 7 月份会离开项目组,恐怕没有时间来这么做了,所以最终还是决定将工程转成 ARC 模式。该项目是某行手机银行客户端,iOS 开发这块除了我,其他的所有 7 个开发人员都是项目组临时招聘的,技术参差不齐,毕竟公司招聘标准就是:便宜 + 能干事。我的职责就是负 阅读全文
Integrating JavaScript into Native Applications
2013-06-23 19:17 by Tracy E, 511 阅读, 收藏,
摘要:
JavaScriptCore 简介iOS7 中新加入的 JavaScriptCore.framework 可能被大多数开发人员所忽略,但是如果你之前就在项目中用过自己编译JavaScriptCore来处理 JavaScript,那么你需要重新关注一下 JavaScriptCore.framework。JavaScriptCore 是苹果 Safari 浏览器的 JavaScript 引擎,或许你之前听过 Google 的 V8 引擎,在 WWDC 上苹果演示了最新的 Safari,据说 JavaScript 处理速度已经大大超越了 Google 的 Chrome,这就意味着 JavaScrip 阅读全文
iOS7程序后台运行
2013-06-23 19:16 by Tracy E, 11195 阅读, 收藏,
摘要:
介绍这次 iOS7 对程序后台运行进行了加强,但是仅仅是加强而已,要想像 Android 程序那样自由当然就别想了,苹果这么做主要还是出于电池使用时间考虑,但是这次的加强对大部分程序基本够用。在介绍之前, 我们先回顾一下在 iOS7 之前的后台运行相关的知识。在 iOS7 之前(iOS4 之后)主要有三类的应用程序能够后台运行:音频播放后台定位服务IP 电话除了这三种应用,其他程序只能是在进入后台之前向系统请求一个额外的运行时间(最长为 10 分钟),并在该时间内来进行后台运行操作,如保存用户信息,上传或下载数据,进行视频编码等操作。- (void)applicationDidEnterBac 阅读全文
为iOS优化你的Web App
2013-01-22 10:36 by Tracy E, 657 阅读, 收藏,
摘要:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /&g 阅读全文
DOM based XML Parser for Objective-C
2012-09-09 22:18 by Tracy E, 924 阅读, 收藏,
摘要:
当前Objective-C可用的XML解析器比较多(可以到我的文章《介绍两种常用的XML解析方式(NSXMLParser & GDataXMLNode)》和《如何选择你的iPhone XML解析器》中了解)。想了解DOM相关知识可参看W3School。其实Google的GDataXMLNode 其实也是一种基于DOM结构的XML解析器,GDataXMLNode只是是对libxml XML解析库进行了Objective-C的封装。在大多是情况下GDataXMLNode完全可以满足我们解析XML格式文件的需求,也能够对文档XML文件结构进行修改(可能需要自己实现一些东西)。但是GDataX 阅读全文
Blocks in Objective-C
2012-08-22 10:53 by Tracy E, 868 阅读, 收藏,
摘要:
For some time now, blocks have been part of scripting and programming languages such as Ruby, Python, and Lisp (where they can go by the names of “closures” and “lambdas”). As of OS X v10.6 and iOS 4.0, blocks are a powerful C-language feature that is part of Cocoa application development. Although the syntax and storage details of blocks might at first glance seem cryptic, you’ll find that it’s act 阅读全文
For some time now, blocks have been part of scripting and programming languages such as Ruby, Python, and Lisp (where they can go by the names of “closures” and “lambdas”). As of OS X v10.6 and iOS 4.0, blocks are a powerful C-language feature that is part of Cocoa application development. Although the syntax and storage details of blocks might at first glance seem cryptic, you’ll find that it’s act 阅读全文
[Socket]BSD socket简易入门
2011-07-20 22:01 by Tracy E, 5759 阅读, 收藏,
摘要:
介绍当你进入 UNIX 的神秘世界后,立刻会发现越来越多的东西难以理解。对于大多数人来说,BSD socket 的概念就是其中一个。这是一个很短的教程来解释他们是什么、他们如何工作并给出一些简单的代码来解释如何使用他们。类比 (什么是 socket ?)socket 是进行程序间通讯(IPC)的 BSD 方法。这意味着 socket 用来让一个进程和其他的进程互通信息,就象我们用电话来和其他的人交流一样。用电话来比喻是很恰当的,我们在后面将一直用电话这个概念来描叙 socket 。装上你的新电话(怎样侦听?)一个人要能够收到别人打给他的电话,首先他要装上一门电话。同样,你必须先建立 socke 阅读全文
iPhone控制程序是否打印Log日志
2011-07-18 10:14 by Tracy E, 801 阅读, 收藏,
摘要:
在程序编译调试过程中,我们常常打印一些日志信息,但是到程序上线时,如果打印的日志太多,可能会影响程序在设备上的执行效率,所以通常在程序准备上线时,将所有的Log信息注释掉... 阅读全文
在程序编译调试过程中,我们常常打印一些日志信息,但是到程序上线时,如果打印的日志太多,可能会影响程序在设备上的执行效率,所以通常在程序准备上线时,将所有的Log信息注释掉... 阅读全文
iPhone开发不得不知的几件事
2010-12-31 10:22 by Tracy E, 951 阅读, 收藏,
摘要:
本文参考:iOS Application Programming Guide – The Application Runtime EnvironmentiOS运行环境的设计目标,快速安全的执行应用程序。快速启动,短暂使用一个典型情况是,用户从口袋中拿出设备,只使用几秒钟或者几分钟,然后再次放在口袋里。 这要求:快速启动应用使用后能尽快退出特殊的系统行为在很多地方,iOS都和mac os x特性和行为一样。但是有些情况和mac os x不同:虚拟内存系统管理程序内存,iOS和mac os x拥有相同的特性和行为方式。在iOS下,每个程序仍然拥有自己的虚拟地址空间,但是和mac os x不同的是, 阅读全文
keychain services on iPhone
2010-12-29 17:41 by Tracy E, 1717 阅读, 收藏,
摘要:
keychain services on iPhone:# When a user backs up iPhone data,the keychain data is backed up but the secrets in the keychain remain encrypted in the backup.The keychain password is not included in the backup.Therefore,passwords and other secrets stored in the keychain on the iPhone cannot be used b 阅读全文
iphone获取地址的详细信息
2010-12-20 17:17 by Tracy E, 815 阅读, 收藏,
摘要:
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate {if (self = [super init]) {// Custom initialization reverseGeocoder = [[MKReverseGeocoder alloc] initWithCoordinate:coordinate];reverseGeocoder.delegate = self;[reverseGeocoderstart]; //⋯⋯}returnself;} #pragma mark MKReverseGeocoderDelegate 阅读全文
Objective-C加密算法
2010-11-15 08:06 by Tracy E, 5146 阅读, 收藏,
摘要:
#import #import //MD5- (NSString*)md5Hash { unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5([self bytes], [self length], result); return [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", result[0], result[1], result... 阅读全文
iphone支持的所有字体
2010-11-04 17:39 by Tracy E, 3367 阅读, 收藏,
摘要:
//打印iphone支持的所有字体NSArray *familyNames = [UIFont familyNames];for(NSString *familyName in familyNames){ NSLog(@"%@", familyName); NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName]; for(NSString *fontName in fontNames) { NSLog(@"\t%@", fontName); }}Arial HebrewAr... 阅读全文
浙公网安备 33010602011771号