ios

A collection of 9 posts

swift

Swift 3

Swift 3 正式发布已经 3 周了,大家 Swift 项目的代码迁移做的怎么样?Glow Baby 项目我花了近 3 天时间,12956 行增改,9817 行删减,360 个文件。迁移的过程是痛苦的,心很累,Xcode 8 的迁移工具也没有让我轻松多少。 不过待迁移完毕后,Swift 3 读起来、写起来都更舒服。Swift 1 确立了语言的基线:安全、快速、现代。Swift 2 展现了 Swift 应该是什么,未来怎么走:面向协议的编程、开源。而

  • 顾 鹏
    顾 鹏
ios

Deferred Deep Linking in iOS

Deep Linking 其实 deep linking 并不是一个新名词,在 web 开发领域,区别于指向首页的链接(http://tech.glowing.com/),deep linking 是指向具体内容页的链接(http://tech.glowing.com/cn/advices-to-junior-developers/)。在移动开发领域,deep linking 则是指 mobile app 在 handle 特定 URI 的时候可以直接跳转到对应的内容页或触发特定逻辑,而不仅仅是启动 app。比如 dianping://shopinfo?id=1859284,如果你的手机上装了大众点评的话点击这个链接可以直接跳转到商铺页面。这样做的好处主要有: 在

  • Allen
    Allen
ios

实现iOS 9 Task Switcher动画

升级到iOS 9以后,发现新的task switcher的动画蛮有趣的,于是就动手实现了下,最终效果如下~ 思路 首先我们需要一个横向的scroll view,可以用UICollectionView,也可以自己实现一个。scroll view里每一页都是一张card,一屏5张card: | | |card card card card card| | | 其次,我们需要在scrollViewDidScroll中判断每张card距离中心的距离,根据这个值来调整它的alpha,scale以及x轴的translation。 alpha:右边的card alpha都是1,左边的越靠左alpha越小 scale: 从左往右依次变大 translation:除了中间的card,所有的card都会右偏,而为了让中间card大部分都露出来,右边的card偏移需要比左边大 开工 1. 横向滚动的scroll view 我们可以自己实现一个横向无限滚动的scroll view, 具体可以参考: http://tech.glowing.

  • leo
    leo
ios

动态修改UINavigationBar的背景色

这是我们最终想要得到的效果: 思路 在UISrollView的delegate方法 - (void)scrollViewDidScroll:(UIScrollView *)scrollView中根据当前的contentOffset更新navigationBar的backgroundColor即可,so easy~ 开动 那么我们来看看apple为我们提供了哪些API来设置navigationBar的颜色。 首先想到的是最常用的[UINavigationBar appearance] ,我们一般会在AppDelegate中使用它对navigationBar进行统一的设置。但是如果试一下,会发现在scrollViewDidScrollView中调用它并不能动态地改变navigationBar的颜色,原因可以看一下Apple的doc: Use the UIAppearance protocol to get the appearance proxy for a class. You can customize the appearance of instances of a class by sending appearance

  • leo
    leo
ios

GLPubSub - Glow iOS 中的订阅发布模式

前言 我们计划通过 blog 和开源的方式,分享一些我们在开发 Glow 和 Nurture 的过程中积累的开发经验。GLPubSub 作为开源计划的第一步,是一个代码量较少,但很实用的 Category。 GitHub: https://github.com/Glow-Inc/GLPubSub Documentation: http://cocoadocs.org/docsets/GLPubSub Notification 作为发布订阅模式(观察者模式)的一种,在 iOS App 的开发过程中很常见,GLPubSub 是 NSNotificationCenter 的封装,目标是简化 iOS 开发中的发布订阅模式。因为是 NSObject 的

  • Allen
    Allen
ios

使用CADisplayLink实现果冻效果动画

CADisplayLink是什么 根据Apple的doc: A CADisplayLink object is a timer object that allows your application to synchronize its drawing to the refresh rate of the display. 比起NSTimer,CADisplayLink可以确保系统渲染每一帧的时候我们的方法都被调用,从而保证了动画的流畅性。 Demo 我们希望在animate一个view的时候给它加上果冻效果: 我们会把所有的逻辑都封装到一个BlockView里,在这个view里首先申明一个property: @property (strong, nonatomic) CADisplayLink *displayLink; 在动画开始的时候,初始化displayLink,指定tick方法: - (void)startAnimation { if (self.

  • leo
    leo
UIScrollView 实践经验
ios

UIScrollView 实践经验

UIScrollView(包括它的子类 UITableView 和 UICollectionView)是 iOS 开发中最常用也是最有意思的 UI 组件,大部分 App 的核心界面都是基于三者之一或三者的组合实现。UIScrollView 是 UIKit 中为数不多能响应滑动手势的 view,相比自己用 UIPanGestureRecognizer 实现一些基于滑动手势的效果,用 UIScrollView 的优势在于 bounce 和 decelerate 等特性可以让 App 的用户体验与

  • Allen
    Allen