1. App Extension Study 4

    Author: Charles Zhu
    Summary: ios8 app extension

    1 开始

    本篇介绍剩下的Custom Keyboard,之前的3篇:

    • 第一篇: 介绍了Extension的基本概念/运行周期/数据共享等通用技术细节
    • 第二篇介绍并实践:widget,share,action和Photo Editing
    • 第三篇介绍并实践了Sync和File Procvider

    2 Custom Keyboard

    iOS8终于对第三方输入法开放,引起一片毋需越狱的呼声,这就是通过extension实现的。在以前,app可以单独实现适合自己的文本输入法;而iOS8上,如果用户在设置中添加第三方的键盘,就会对所有app可见(如果app没有禁止使用第三方输入法的话)。对于重视用户隐私的苹果公司而言,虽然开放了输入法的扩展,但是对于用户数据和隐私的保护是非常重视,因此在开发的时候要时刻关注。

    2.1 第三方输入法要具备的特征

    输入法的核心是要对用户的点击等手势及时的响应,提供可选的文本和插入文本等。除此之外,重要的就是要能够切换到下一个输入法。苹果文档中列出了一些特征 ...

    Tagged as : ios8 AppExtension
  2. App Extension Study 3

    Author: Charles Zhu
    Summary: ios8 app extension

    1 开始

    第一篇介绍了Extension的基本概念,Extension的运行周期,和containing app的数据共享等细节,第二篇介绍并实践了4种extension,而本篇就要介绍Sync和File Provider。

    2 Finder Sync (OS X)

    因为extension要运行在10.10的OS X上,由于没升级,所以本节就侧重“理论”了。

    2.1 含义

    顾名思义,就是保持本地的某些文件夹和远程的文件夹内容保持一致。它可以让用户在Finder实时察觉同步的状态并随时控制同步的进程。比如说可以在文件夹上加badge或是文字来告诉用户当前的状态,或是在Finder窗口添加工具栏方便打开监视的文件夹或强制退出同步(不知道网盘类的应用如何集成该extension呢)。因此,Finder Sync的host app只能是Finder
    Finder Sync可以:

    • 注册一系列文件夹进行同步
    • 当用户打开 ...
    Tagged as : ios8 AppExtension
  3. iOS8下控件的旋转

    由起

    使用iOS8 SDK编译后的项目在ipad上运行发现某些控件如HUD弹出后它的位置有了旋转,但是该现象在iOS8的iphone设备上却没有出现。果断认为是iOS8SDK引起的,需要做紧急修复。

    修复

    代码中迅速找到rotation的相关部分,发现已经是使用[[UIApplication sharedApplication] statusBarOrientation],那应该不会是方向获取错误导致的。那姑且以为是iPad上特有的现象,于是加了设备的判断,测试通过!可惜在iOS7的iPad上还是有问题,正当烦恼之际,突然想起之前的某个issue,果然是同样的问题,最终的解决方案是:

    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1)
        {
            switch (interfaceOrientation) {
                case UIInterfaceOrientationLandscapeLeft:
                    self.transform = CGAffineTransformMakeRotation(M_PI * 270.0 / 180.0);
                    break;
    
                case UIInterfaceOrientationLandscapeRight:
                    self.transform = CGAffineTransformMakeRotation(M_PI * 90.0 / 180 ...
    Tagged as : ios8
  4. iOS8之UIAlertController

    由起

    UIAlertController是iOS8中引入的,用于整合UIAlertViewUIActionSheet的新类,在实现中抛弃了之前的delegate用法,而采用了block的方式,从而使得使用和可读性都简化了不少。
    使用iOS8SDK编译的项目,大多数情况使用之前的UIAlertViewUIActionSheet都不会产生问题,如果有问题了,那就需要使用新类了。比如,一个项目中iPad上调用[actionSheet showFromToolbar:]产生错误:

    2014-11-05 10:50:26.614 XXXXXX[467:78104] Presenting view controllers on detached view controllers is discouraged <UIViewController: 0x17ea3470>.
    2014-11-05 10:50:26.762 XXXXXX[467 ...
    Tagged as : ios8
  5. App Extension Study 2

    Author: Charles Zhu
    Summary: ios8 app extension

    1 开始

    上一篇介绍了Extension的基本概念,Extension的运行周期,和containing app的数据共享等细节,这节开始实践。需要说明的本文不会覆盖所有类型,比如Finder Sync类型是OS X独有的,这里会一带而过。

    2 Widget

    Widget就是Today extension,这个大家比较熟悉:下拉通知中显示的股票信息就是一个widget。从这里我们也可以看出widget的特点:

    1. 可以自定义UI
    2. 必定和containing app有着数据共享

    2.1 widget 工程模版

    在已有工程中新建一个target,选择Application Extension中的Today Extension,这时工程中增加了如下文件:
    widgetImg
    先来看Info.plist,主要增加了NSExtenstion的key,内容如下:

    <key ...
    Tagged as : ios8 AppExtension
  6. App Extension Study 1

    Author: Charles Zhu
    Summary: ios8 app extension

    Intro

    app extension是iOS8引入的功能,使得iOS8也有了“插件”系统。虽然一时还不知道可以做些什么应用,但我相信会有杀手级的extension出现而且某种程度会影响到app的生态系统发展。所以,我们需要了解并熟悉如何制作app extension。本系列会以官方文档为指引,按图索骥,拨开app extension的面纱(主要侧重iOS)。

    App Extension

    有很多关于App Extension的介绍,所以就不详细介绍,这里侧重介绍Extension的生命周期以及和其他app的通信。

    术语

    • host app: 用户在某个app中启用了extension,该app就叫host app
    • containing app: extension不能单独作为target存在,必须依附在某个具有普通app的工程内,该app就是containing app。一个containing app可以有多个extension。
    • app extension:

    当下载了含有extension的containing app,那么如果某个app可以使用该extension ...

    Tagged as : ios8 AppExtension
  7. git bisect查找xcode6工程在iOS7下不全屏的问题

    Author: Charles Zhu
    Summary: launch screen,xcode6,git

    xcode6工程在iOS7下未全屏

    使用xcode6创建的工程在iOS7下运行,居然出现了未全屏的现象,仿佛一下子回到了iPhone5发布的时代。因为提交了多次,不清楚是哪次引入的问题。所幸使用了git管理版本,想找到出错的提交,就靠git了。

    git bisect

    在不知道bisect之前,我能想到的办法是通过 reset hard 或者archive “恢复”到逐个提交,然后运行看结果。可是强大的git提供了bisect,于是一切都好办了。
    bisect的使用就是标记两个版本,一个正确一个错误,然后git会自动找中间某个提交,由用户来确认是正确还是错误。如此反复,就能定位到引入错误的提交,具体执行过程演示如下:

    git log --oneline //列出提交记录
    git bisect start //开始查找
    git bisect bad //标记当前(master ...
    Tagged as : ios8 git launch screen

Page 1 / 1