自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(41)
  • 收藏
  • 关注

转载 新书《iOS编程(第6版)》抢鲜试读

我最近翻译了Big Nerd Ranch的《iOS编程(第6版)》。我用了大半年时间,尽可能做到通顺易懂。不足之处请大家多多指正。感谢辛苦审校的丁道骏同学。这本书得过Jolt大奖,原书在美国亚马逊书店排名iOS编程类榜首。前几版反响都不错(第5版也是我翻译的),希望第6版不会叫大家失望。京东当当天猫都有卖,我查了下,天猫最便宜:https://detail.tmall.com/i...

2019-08-02 16:00:00 190

转载 Apple Watch 2.0 数据通讯

经常会碰到Watch app和WatchKit extension需要访问同一个文件。比如,使用一个自定义的字体,播放多媒体文件。有两种方法完成这个任务。 设计的时候,每个包放一份文件。它们分别访问自己的文件。 给它们添加同一个共享的App Group。这样它们可以在运行时访问同一个容器了。WatchKit extension可以使用Watch Connectivit...

2016-04-19 15:18:00 133

转载 iOS 9 新特性

这篇文章介绍了iOS9开发相关的简介,现在发布的设备都会搭载iOS9。这篇文章也列出了详细描述新特性的文章。iPad多线程增强iOS9使用Slider Over, Split View, Picture in Picture增强了iPad上的多线程用户体验。Slide Over特性可以让用户启动第二个APP。Split View属性可以让用户在iPad Air2上使用两个a...

2015-09-17 13:50:00 138

转载 Apple Watch 1.0 开发介绍 2.1 WatchKit Apps UI要点

实现app的开始是定义storyboard场景。每个场景定义了app的一部分界面。可以为不同的尺寸自定义场景。组装storyboard界面WatchKit app和iOS app的布局模式不同。组装WatchKit app界面时,并不是把元素在一个空间里任意层次结构的摆放,而是把元素添加到场景,Xcode会管理他们,一行一行的竖直堆在上面。运行时,Apple Watch会根...

2015-05-11 15:08:00 97

转载 Apple Watch 1.0 开发介绍 1.4 简介 使用iOS技术

WatchKit extension可以使用iOS app同样的技术,但是由于他是extension,使用有些技术的时候会有限制,有些不推荐使用。下面是一些介绍以及什么时候使用什么技术:有些需要权限的操作需要在iPhone上同意。有些特殊的技术需要用户允许,比如位置信息。在WatchKit上使用这些技术会在iPhone上触发允许的提示。Apple Watch也会显示它自己的提示,...

2015-04-30 15:58:00 89

转载 Apple Watch 1.0 开发介绍 1.3 简介 WatchKit App 架构

WatchKit app和WatchKit extension一起实现了app的界面。当用户在Apple Watch中操作时,WatchKit app从storyboards中选择合适的场景。比如,如果用户查看glance,它就会选择glance场景。在选择场景时,WatchKit通知对应的iPhone启动WatchKit extension来创建管理场景的对象。当常见完全配置好之后,它...

2015-04-30 13:56:00 137

转载 Apple Watch 1.0 开发介绍 1.2 简介 配置Xcode工程

WatchKit app需要一个现有的iOS app。在iOS app工程中,添加一个新的WatchKit app target,它包含了WatchKit app和WatchKit extension中需要的资源。他们会和iOS app一起发布到appstore。WatchKit app target提供了初始创建WatchKit app,glances,以及自定义通知界面的的所有资...

2015-04-29 19:07:00 104

转载 Apple Watch 1.0 开发介绍 1.1 简介 开发苹果手表

使用Apple Watch,用户可以使用一种不显眼的方式查看信息。不用把iPhone从口袋里拿出来,就可以通过看一下手表快速获得重要信息。作为Apple Watch的第三方app开发者,应该通过使用最直接的方式提供做重要的信息来支持简短的操作Apple Watch和它匹配的iPhoneApple Watch需要一个iPhone来运行第三方app。要创建一个第三方a...

2015-04-29 17:59:00 97

转载 MAC 10.10 apache 服务器配置

mac中自带了apache服务器, 如果需要在mac上使用apache服务器, 只需要配置并启动服务器即可。mac 10.10 中自带的apache版本是 2.4mac 10.9 中自带的apache版本是2.21. 启动服务器打开Terminal, 输入 sudo apachectl start 即可。启动后, 在浏览器中输入http://localhost...

2015-01-08 15:17:00 85

转载 iOS 8 新特性

这篇文章会介绍iOS8开发相关的主要特性。App 插件通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法。例如:可以通过App插件帮助用户分享他们的内容到社交网站。在用户安装了这个插件后,当他在App中点击分享按钮时就可以选择这个插件了。自定义的插件提供接受,认证,发布用户内容的功能。系统会在分享菜单中列出他们并且在用户点击后实例...

2014-09-29 17:32:00 129

转载 ios 多线程开发(三)Run Loops

Run loops是线程相关的一些基本东西。一个run loop是一个处理消息的循环。用来处理计划任务或者收到的事件。run loop的作用是在有事做的时候保持线程繁忙,没事的时候让线程挂起。Run loop的管理并不是完全自动的。你仍然需要设计代码来在合适的时候启动run loop来相应事件。Cocoa和Core Foundation都提供了run loop对象来配置和管理run ...

2014-08-05 16:51:00 72

转载 ios 多线程开发(二)线程管理

线程管理iOS和OS X中每一个进程(或程序)由一个或多个线程组成。程序由一个运行main方法的线程开始,中间可以产生其他线程来执行一些指定的功能。当程序产生一个新线程后,这个线程在程序进程空间内变为一个独立的实体。每个线程有它自己的执行栈。线程可以和其他线程通讯,执行I/O操作,以及其他你想要它做的事。由于他们在同一个进程中,所有一个程序的所有线程共享虚拟内容并且他们和进程有同...

2014-07-30 15:40:00 112

转载 ios 多线程开发(一)简介

简介线程是在一个程序中并发的执行代码的方法之一。虽然有一些新的技术(operations, GCD)提供了更先进高效的并发实现,OS X和iOS同时也提供了创建和维护线程的接口。这里将要介绍线程相关的包以及如何使用他们。同时也会介绍程序中多线程代码的同步。关于线程开发多年以来,电脑的最大处理速度受制于单个处理器的处理速度。当单核处理器开始达到他们的上线时,芯片市场转...

2014-05-23 15:04:00 61

转载 Objective C Runtime 开发介绍

简介Objective c 语言尽可能的把决定从编译推迟到链接到运行时。只要可能,它就会动态的处理事情。这就意味着它不仅仅需要一个编译器,也需要一个运行时系统来执行变异好的代码。运行时系统就好像是Objective c 的操作系统。它让Objective c能工作。这篇文章主要讲解NSObject类和Objective c如何于运行时系统交互。特别是,解释如何在运行时动态的加载新...

2014-05-21 16:04:00 51

转载 iOS 7 新特性

iOS7更新了很多引人注目的功能。用户界面完全重新设计了。iOS7为开发2D,2.5D游戏引入了全新的动画系统。加强多线程,点对点连接,以及许多其他重要的功能让iOS7成为有史以来最有意义的一次发布。这边文章总结了iOS7开发相关的特性。这个版本大操作系统可以再目前的iOS设备上运行。另外,关于关键的新技术,这篇文章也列出了详细介绍这些特性的文章。用户界面的改变i...

2014-01-20 23:42:00 95

转载 Android - 分享内容 - 添加一个简单的分享操作

在ActionBar上使用ActionProvider实现一个高效的友好的分享操作在Android 4.0(API等级14)上更容易了。一个ActionProvider,一旦附加到action bar的菜单上了,就会处理外观和行为上的操作,至于ShareActionProvider,你值需要提供分享intent,然后它会完成剩下的事情。注意:ShareActionProvider从A...

2013-06-21 17:58:00 111

转载 Android - 分享内容 - 接收其他APP的内容

就象程序可以发送数据给其他程序,所以也可以接收其他程序的数据。想一下用户如何和程序交互,以及想从其他程序接收什么样类型的数据。例如,一个社交程序可能对接收其他程序的文字(比如有趣的网址)感兴趣。Google+ 程序可接收文字和单多张图片。用这个app,用户可以和容易的用Android Gallery中的相片在Google+上发布。更新Manifestintent filter会告...

2013-06-21 16:59:00 170

转载 Android - 分享内容 - 给其他APP发送内容

创建一个intent时,必须要指定intent将要触发的操作。Android定义了很多操作,包括ACTION_SEND,就象可以猜到的一样,表示intent是把数据从一个activity发送给另一个,就算是跨界。要发送数据给其他activity,值需要指定数据和它的类型,系统会识别可兼容的接收activity然后展示给用户(如果有多个选择)或者立刻启动activity(如果只有一个选择)...

2013-06-21 16:13:00 304

转载 Android - 分享内容

Android程序一个很重要地特性是他们可以相互通讯和交互。为什么要重新开发那些不是你程序的核心而且其他程序已经有的功能呢?这里将要介绍一些使用Intent API和ActionProvider对象来实现的常用的程序之间发送和接收内容的方法。课程给其他APP发送内容学习如何设置程序来用Intent给其他程序发送字符串和二进制数据。接收其他APP的内容学习如何设置程...

2013-06-19 17:39:00 60

转载 Android - 和其他APP交互 - 让其他app启动你的activity

前面的两篇文章主要讲了一个方面:从app中启动其他app。但是如果你的app可以处理对其他app有用的操作,你的app也应该响应其他app的操作请求。例如,如果你创建了一个社交app可以分享信息和图片给用户的朋友,支持ACTION_SENDintent,让用户在其他app初始化分享操作然后启动你的app来执行,是一件很有趣的事情。为了其他app可以启动activity,应该在mani...

2013-06-19 17:18:00 137

转载 Android - 和其他APP交互 - 获得activity的返回值

启用另一个activity不一定是单向的。也可以启用另一个activity并且获得返回值。要获得返回值的话,调用startActivityForResult()(而不是startActivity())。比如,app可以打开相机然后接收一张照片作为返回值。或者,为了让用户选择一个联系人可以让用户启动联系人相关app,然后收到联系人详情作为结果。当然,这个响应的activity必须设...

2013-06-19 14:14:00 271

转载 Android - 和其他APP交互 - 把用户带到其他app

Android的重要功能之一就是app可以根据要执行的操作让用户启动另外一个app。例如,app有一个商业地址然后想要在地图上显示,并不需要在app中加一个显示地图的activity,可以直接用Intent创建一个要显示地址的请求,Android系统会启动一个可以显示地图的app。就像以前讲到的,可以使用Intent在app中的activity之间切换。基本上是使用的明确的Inten...

2013-06-18 23:30:00 177

转载 Android - 和其他APP交互

一个Androidapp通常有好几个activity。每个activity显示一个可以让用户执行特殊操作(例如看地图,照相等)的界面。要让用户从一个activity切换到另一个activity,app必须使用Intent来定义app打算做什么。当用startActivity()把Intent传递给系统时,系统用Intent来识别和开始合适的app组件。使用Intent甚至可以让app启...

2013-06-18 23:14:00 72

转载 Android - 数据存储 -在SQL数据库中保存数据

对于重复的或结构化的数据,保存到数据库中是很好的选择,比如联系人信息。这里假设你对SQL数据库大体上了解然后帮助你学习Android上的SQLite数据库。在Android数据库上需要用到的API可以在android.database.sqlite包中找到。定义Schema和ContractSQL数据库中一个主要的准测是schema:一个正式的数据库如何组织的声明。这个schem...

2013-06-18 22:52:00 284

转载 Android - 数据存储 -存储文件

Android使用的文件系统和其他平台的基本磁盘的文件系统很相似。这里将要介绍如何使用FileAPI在Android文件系统中读写文件。File对象适合按顺序读写大量的数据。例如,适合图片文件或者其他在网络上交换的东西。这里将要展示基本的文件相关的任务。这里假设你熟悉基本的Linux文件系统和标准的java.io中的输入输出。选择内部或外部存储所有的Android设备由...

2013-06-18 22:45:00 66

转载 Android - 数据存储 -存储键值对

如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI。SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们。每个SharedPreferences文件由framework管理而且可以时私有的或者共享的。这里将要介绍如何使用SharedPreferencesAPI来存储和找回数据注意:SharedPrefer...

2013-06-18 22:36:00 567

转载 Android - 数据存储

大部分Androidapp需要保存数据,就算只是在onPause()时保存app的状态信息来保证用户进度不丢失。大部分app需要保存用户设置,有些程序可能需要管理文件和数据库中的大量数据。这里将要介绍Android中主要的存储数据的方法,包括:在文件中存储简单的键值对数据类型。在Android文件系统中存储任意的文件。使用SQLite使用和管理数据库...

2013-06-18 22:31:00 67

转载 Android - 用Fragments实现动态UI - 和其他Fragments通信

为了重用FragmentUI组件,应该把每个都设计为它自有的模块组件并且有自己的布局和行为。一旦定义了这些可重用的Fragment,你可以把它们和一个activity关联然后和程序的逻辑一起实现上层的UI。经常会用到一个Fragment需要和另一个通讯,比如根据用户事件来交换内容。所有的fragment和fragment只见的通讯是通过相关的activity实现的。两个fragme...

2013-06-18 17:09:00 96

转载 Android - 用Fragments实现动态UI - 创建灵活的UI

当设计程序来支持各种不一样的屏幕尺寸时,可以在不同的布局中重用fragment来根据可用的屏幕大小来优化用户体验。例如,在手机上可能使用一个fragment来使用单窗口用户体验比较合适。但是,你可能想在平板上边靠边的设置两个fragment因为有更宽的屏幕向用户展示更多信息。图1.两个fragment,同一个activity在不同的屏幕大小上的不同展现形式。在大屏幕上,两...

2013-06-18 17:04:00 137

转载 Android - 用Fragments实现动态UI - 创建Fragment

你可以把fragment当作activity中的一个活动模块,它有自己的生命周期,自己接收输入消息,可以在activity运行的时候添加和删除(就像可以在其他activity中重用的"子activity")。这里会讲述如何用SupportLibrary来扩展Fragment类这样app可以在老版本的系统上运行,就算是Android1.6。注意:如果你因为什么原因把最低APIlev...

2013-06-18 16:56:00 122

转载 Android - 用Fragments实现动态UI - 使用Android Support Library

AndroidSupportLibrary提供了一个带有API库的JAR文件来让你可以在使用最新的AndroidAPI的同时也也已在早期版本的Android上运行。例如,Support Library提供了一个版本的FragmentAPI让你可以使用Android1.6(APIlevel4)以及更高版本。这里将要展示如何设置app来使用SupportLibrary和使...

2013-06-18 16:52:00 120

转载 Android - 用Fragments实现动态UI

要在Android上实现动态的多窗口的用户交互界面,需要把UI组建和activity放到modules中,这样才能划进划出activity。可是使用Fragment类来创建modules,它就像一个嵌套的activity它们可以定义自己的布局和管理自己的生命周期。当一个fragment指定它自己的布局后,它可以在activity中和其他的fragment组合来为不同的屏幕大小修改布...

2013-06-18 16:49:00 107

转载 Android - 支持不同的设备 - 支持不同的平台版本

在最新版本的Android为app提供很好的新API时,也应该继续支持旧版本的Android直到大部分设备已经更新了。这里将要介绍如何在使用最新API带来的优点的同时继续支持老版本。DashboardforPlatformVersions会经常更新来展示每个Android版本的活跃设备,是根据访问GooglePlayStore的设备数量统计出来的。整体上,在app支持支持...

2013-06-18 16:38:00 112

转载 Android - 支持不同的设备 - 支持不同的屏幕

Android整体上按照两大类来分类设备屏幕:尺寸和分辨率。app在设备上运行应该考虑大小和分辨率。同样的,你应该包含不同的资源来让app适应不同的屏幕大小和分辨率。整体上有四种尺寸:小的,正常的,大的,超级大的和四种分辨率:低分辨率(ldpi),中分辨率(mdpi),高分辨率(hdpi),超高分辨率(xhdpi)为了声明不同屏幕的不同的布局和突变,你...

2013-06-18 16:30:00 69

转载 Android - 支持不同的设备 - 支持不同的语言

把app的字符串放到另外一个文件中是一个好习惯。Android用android工程中的资源文件夹让这件事变的很简单。如果使用AndroidSDKTools创建工程,这个工具会在工程的根目录下创建res/文件夹。在res/文件夹下面有各种类型的资源的字文件夹。有一些默认的文件比如res/values/string.xml,它是用来存放字符串的。创建本地文件夹和字符串文件为...

2013-06-18 16:26:00 73

转载 Android - 支持不同的设备

世界上有各种不一样形状和大小的Android设备。由于有各种不同类型的设备,你的app可能在各种设备上运行。为了在Android上尽可能的成功,你的app需要使配各种不同的设备。最重要的几点需要考虑的是不同的语言,不同的屏幕大小和不同的Android平台版本。这里将要讲如何用使用平台基本的功能来选择不同的资源和其他特性,这样你的app可以给不同的Android设备提供一致的用户体验,...

2013-06-18 16:24:00 107

转载 Android-管理Activity生命周期 -重新创建Activity

按照正常的app行为,很少情况下activity会销毁,只有当用户点击了返回按钮或者activity通过调用finish()发出销毁信号。系统也有可能销毁activity如果它是停止状态并且很久没有使用,或者前台的activity需要更多的资源时系统不得不关掉后台进程来获得内存。当activity销毁了因为用户点击的返回按钮或者自己结束,系统认为这个activity永远的消失了因为这...

2013-06-18 15:28:00 170

转载 Android-管理Activity生命周期 -停止和重启Activity

停止和重启activity在activity的生命周期中很重要,它能让用户感觉你的app总是激活的而且不会丢失他们的进度。activity在下面的这些情况会停止和重启:用户打开常用app窗口然后从你的app切换到其他app。你的app中的activity现在就在后台了而且停止了。如果用户从主屏的启动图标或者最近使用的app窗口返回到你的app,这个activity就会重启。...

2013-06-18 15:27:00 302

转载 Android-管理Activity生命周期 -暂停和恢复一个Activity

在正常的使用app时,前台的activity有时候会被可见的组件阻塞导致activity暂停。比如,当打开一个半透明的activity(就像打开了一个对话框),之前的activity就会暂停。只要activity仍然部分可见但是没有获得焦点,它会保持在paused状态。但是,一旦一个activity完全被阻塞并且不可见,它就会到Stopped状态(后面会讨论这个)。当activi...

2013-06-18 15:16:00 474

转载 Android-管理Activity生命周期 -开始一个Activity

很多程序都是从main()方法开始启动的,和其他程序不同,android是在activity生命周期的特定状态的特定回调方法中初始化代码的。activity启动和销毁的时候都用很多回调方法。这里将要对生命周期中大多数重要的方法进行一个总体介绍以及如何处理生命周期中的第一个回调方法(这个回调方法创建了一个新的activity实例)。理解生命周期回调方法在activity的生命周...

2013-06-18 14:33:00 89

空空如也

空空如也

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

TA关注的人

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