3D Touch 是什么?

With iOS 9, new iPhone models add a third dimension to the user interface.

  • A user can now press your Home screen icon to immediately access functionality provided by your app.
  • Within your app, a user can now press views to see previews of additional content and gain accelerated access to features.

简单来说3D Touch就是通过区分轻按和重按Home键来进行不同的用户交互。

继续阅读 →

1、什么是图层和视图?

  • 视图:一个视图就是在屏幕上显示的一个矩形块(比如图片,文字或者视频),它能够拦截类似于鼠标点击或者触摸手势等用户输入。视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置.在iOS当中,所有的视图都从一个叫做UIVIew的基类派生而来,UIView可以处理触摸事件,可以支持基于Core Graphics绘图,可以做仿射变换(例如旋转或者缩放),或者简单的类似于滑动或者渐变的动画。

  • 图层:CALayer类在概念上和UIView类似,同样也是一些被层级关系树管理的矩形块,同样也可以包含一些内容(像图片,文本或者背景色),管理子图层的位置。它们有一些方法和属性用来做动画和变换。

区别:是否处理交互

CAlayer和UIView最大的不同是CALayer不处理用户的交互。CALayer并不清楚具体的响应链(iOS通过视图层级关系用来传送触摸事件的机制),于是它并不能够响应事件,即使它提供了一些方法来判断是否一个触点在图层的范围之内。

关系:平行的层级

每一个UIview都有一个CALayer实例的图层属性,也就是所谓的backing layer,视图的职责就是创建并管理这个图层,以确保当子视图在层级关系中添加或者被移除的时候,他们关联的图层也同样对应在层级关系树当中有相同的操作。图层才是真正用来在屏幕上显示和做动画,UIView仅仅是对它的一个封装,提供了一些iOS类似于处理触摸的具体功能,以及Core Animation底层方法的高级接口。

继续阅读 →

“What is Universal Links?”

Apple 推出通用链接:一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开网站和 APP。

通过唯一的网址, 不需要特别的schema就可以链接一个特定的视图到APP 里面 。比如:在微信中使用了通用链接, 那么用户在Safari、UIWebView或者 WKWebView点击一个链接, iOS设备上的微信app怎会在微信里面自动打开这个页面, 如果没有安装则在Safrai中打开响应链接。

NOTE: Universal links let iOS 9 users open your app when they tap links to your website within WKWebView and UIWebView views and Safari pages, in addition to links that result in a call to openURL:, such as those that occur in Mail, Messages, and other apps.

For users who are running versions of iOS earlier than 9.0, tapping a universal link to your website opens the link in Safari.

继续阅读 →

最近阅读了《如何把事情做的最好》这本书,在此写下读书笔记,这也是第一次写读书笔记,给自己一个坚持读书的动力哈哈。

开篇: 每个人生来都具备足够的潜力,每个人都能做到别人眼中难以企及的事情。请永远保持初学之心,勇敢面对人生挑战。 追求速成的浮躁气氛是当下社会的顽疾,若不加以重视,它将带来毁灭性的的后果。只有通过长期的努力,走上精益求精之路,坚持不追求短期目标的持续练习,才能把事情做到最好,最终获得成功。

Tips1: 怎样才能把事情做到最好?

学习任何事情都要通过多次的练习和模仿,经过几个漫长的平台期,在量变引起质变之前,会有很长一段时间感到迷茫,并且进步缓慢。一旦你突破了平台期,学会的技能将伴随你一生,随着学习的深入和练习的深入,你渐渐觉得不那么困难了,并且乐在其中,最后成为一种本能。如何把事情做好,就像你学习抬手触摸额头一样,你同样可以学会英语、算法、编程,还可以学会更好的与别人交往,学会更好的工作和生活。有心之人任何时候都可以踏上精益求精之旅。

继续阅读 →

最近给项目组小伙伴讨论了下如何高效使用git,于是在之前几篇基础上+网络资料整理文档如下,在此记录下:

核心概念

谈到Git,最先需要明确的几个概念:

  • WorkSpace:工作区,即从仓库中checkout出来的,需要通过Git进行版本控制的目录和文件,可以简单的理解为在文件系统里真实看到的文件

  • Stage(Index):暂存区,或者叫做待提交更新区;在提交进入Repository之前,可以把所有的更新放在暂存区, 用 git add 的文件都在这里

  • Repository(Remote/Local):仓库,一个存放在远端/本地的版本库,用git commit提交的文件就到Local Repository,用git push提交的文件就到Remote Repository

  • .git:存放Git管理信息的目录,初始化仓库的时候会自动创建。

有了上面概念的了解,下面就开始上干货,为了方便图解,用xcode创建一个本地TestGit工程来取景

继续阅读 →

使用QuickTime Player录制屏幕

Step1: 打开QuickTime Player之后直接在顶部栏中QuickTime Player的文件菜单栏下找“新建屏幕录制”或直接使用快捷键“control+command+N”调出屏幕录制工具

demo gif

Step2: 调出窗口如下图,点击中间的小红点录制按钮屏幕中央也会出现“点按以录制全屏幕。拖动以录制屏幕的一部分。

继续阅读 →

最近在做项目时发现一个问题:在自定义navigation 的 leftBarButtonItem后,右滑pop 手势失效了,google 了一把,解决过程如下,在此记录下:

问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- (void)viewDidLoad
{
  self.navigationItem.leftBarButtonItem = [self backButton];
}

- (UIBarButtonItem *)backButton
{
  UIImage *image = [UIImage imageNamed:@"back_button"];
  CGRect buttonFrame = CGRectMake(0, 0, image.size.width, image.size.height);

  UIButton *button = [[UIButton alloc] initWithFrame:buttonFrame];
  [button addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
  [button setImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];

  UIBarButtonItem *item; = [[UIBarButtonItem alloc] initWithCustomView:button];

  return item;
}
继续阅读 →

这篇文章是iOS8 Day-by-Day系列的一部分,你可以查看完整的系列目录:iOS8 Day-by-Day 系列文章

介绍

今年的WWDC大会真让人难以置信,除了宣布iOS8之外,他们还引入了一个新的编程语言Swfit。这跟objective-c这种强类型的语言有很大的不同,它包括了现代语言一些常见特性。

怀着拥抱一切新东西的心情,这系列的博客将使用swfit。有大量的信息关于如何学习swfit语言,以及如何与cocoa交互——事实上下面这两本官方的书籍不能错过:

这两本书的中文版见 github: Welcome-to-Swift

继续阅读 →

本文摘自:AppCoda

UIKit中包含了UIGestureRecognizer类来处理手势识别,UIGestureRecognizer是一个抽象类,用于检测发生在UIView上预定义的手势。UIGestureRecognizer 提供了一些子类来处理具体的手势行为,如下:

  • UITapGestureRecognizer: 该类处理View上的点击Tap操作(任意手指、任意次数的点击)该操作很常见

  • UISwipeGestureRecognizer: 该类处理滑动Swipe操作(上、下、左、右)如:照片应用中滑动查看下一张照片

  • UIPanGestureRecognizer: 该类处理拖拽Pan操作,如:将一个View从一个点拖拽到另一个点

继续阅读 →