HOME/Articles/

cocoapods

Article Outline

Product ReDesign: 产品的迭代 - CocoaPods

到底如何引入第三方库也是很有趣的事情。直觉来说,应该直接把要引入的库拖进我们的当前项目,但是这样一来,会引发一些不同项目之间的编译问题,以及版本管理的问题。

所以 CocoaPods 作为一种优雅的解决方案就显得格外清新。

安装 CocoaPods

Cocoapods依赖Ruby语言环境,因此需要先安装最新版本的Ruby。打开系统的终端,执行下面的命令:

\curl -sSL https://get.rvm.io | bash -s stable

rvm install ruby

gem install cocoapods

初始化 Podfile

在终端里进入我们的项目文件夹,Diary 我存放在 Home 的 SourceCode 文件夹下

cd SourceCode/Diary
pod setup

这时候就会为你生成一个 Podfile

# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'

use_frameworks!

target 'Diary' do

pod 'pop'

end

'use_frameworks!' 的意思是将第三方库以 Framework 的方式引用,这样不同 App 间如果都引用了同一个第三方库,那么就不针对每个 App 都再创建一个那个库的实例,以达到节省系统内存的作用。

在 target 'Diary' 里加入 pod 'pop' 就完成了 pop 的引用添加。

安装依赖

最后,执行

pod install

就可以完成安装。

安装完成后帮你生成一个 .xcworkspace 的文件,在这里就是 Diary.xcworkspace,从现在开始,就要使用 Diary.xcworkspace 来打开我们的项目了。

使用第三方库

以 pop 为例,在优化一节里我们使用了这个来自 Facebook 的第三方库,pod install 之后,我们需要在引用的地方头部输入

import pop

我们可以通过一下方式使用 pop 来取代上一节中的动画,实现一个弹性动画效果

import UIKit
import pop

class DiaryLabel: UILabel {


    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        // 使用Pop对其进行缩放
        let anim = POPSpringAnimation(propertyNamed: kPOPLayerScaleXY)
        anim?.springBounciness = 10
        anim?.springSpeed = 15
        anim?.fromValue = NSValue(cgPoint: CGPoint(x: 1.0, y: 1.0))
        anim?.toValue = NSValue(cgPoint: CGPoint(x: 0.9, y: 0.9))
        self.layer.pop_add(anim, forKey: "PopScale")

        super.touchesBegan(touches, with: event)
    }

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        // 使用Pop对其进行缩放
        let anim = POPSpringAnimation(propertyNamed: kPOPLayerScaleXY)
        anim?.springBounciness = 10
        anim?.springSpeed = 15
        anim?.fromValue = NSValue(cgPoint: CGPoint(x: 0.9, y: 0.9))
        anim?.toValue = NSValue(cgPoint: CGPoint(x: 1.0, y: 1.0))
        self.layer.pop_add(anim, forKey: "PopScale")

        super.touchesEnded(touches, with: event)
    }

}

现在运行你的App,当点击日记的时候,就可以得到一个漂亮的缩放效果。

本节代码可从GitHub(https://github.com/ProducterTips/producter-book-examples/tree/master/Diary/Diary_13) 获得。

第三方库

既然有这么多放在CocoaPods上的第三方库,就非常需要一个收集这类库的地方,Cocoa Controls 正是这方面非常老牌的一个分享社区。

Cocoa Controls

CocoaControls 是非常老牌的一个分享社区

数以千计的开源控件

阅读别人的代码是最快速的学习途径,你不妨随时浏览一下。