Masonry 和 cocopods 介绍及安装步骤
Masonry 是什么、有什么用?
安装方法(两种方法):
方法一、从github下载源码导入项目。(测试版本: Masonry 0.6.1) 方法二、用cocopods管理。 本文绍介方法一及cocopods的安装和使用,方法二测试没有成功过,待续。
从github下载源码导入项目。(测试版本: Masonry 0.6.1):
总步骤有:获取源码、将源码加入项目、定义两个宏、引用Masonry.h。
下载源码:https://github.com/Masonry/Masonry ; 解包后将Masonry文件夹复制到自己的项目文件夹里; 用XCODE打开自己的项目,将Masonry文件夹拖入项目,选择COPY; 定义两个宏: #define MAS_SHORTHAND //use Masonry without the 'mas_' prefix
#define MAS_SHORTHAND_GLOBALS //enable auto-boxing for default syntax
引用头文件即可使用: #import "Masonry.h"
可添加代码自动完成: 源码解包后复制CodeSnippets文件夹内的所有文件到~/Library/Developer/Xcode/UserData/CodeSnippets即可。 注:步骤4和5可以用一个PCH文件实现项目的所有文件自动引用相关定义。 另外源码包解开后有一个README.MD文件,可以看看里面的 ‘## Installation’ 一节
* Xcode6 中添加 pch 文件的步骤:*
在项目里 (建议添加到 Supporting Files 组里) 添加一个.pch文件: 创建文件: right clicked > New File > IOS或OSX > Other > PCH FILE > NEXT > 设置一个名字然后保存. 将pch文件完事路径添加到XCODE: project > Build Settings > Search prefix > find ‘Prefix Header’, enter ‘$(SRCROOT)/path/xxx.pch’。(build , release 两个都要添加) 配置”xxx.pch文件内容”, 如果一切正常,即可使用: xxx.pch内容:
<code class="language-obj-c hljs vala has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#ifdef __OBJC__ </span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//define this constant if you want to use Masonry without the 'mas_' prefix</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#define MAS_SHORTHAND</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//define this constant if you want to enable auto-boxing for default syntax</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#define MAS_SHORTHAND_GLOBALS</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#import "Masonry.h"</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#endif</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>
cocopods是什么有什么用?
出处:rubygems 的开源项目, https://rubygems.org/ (可能被墙) 作用:下载、管理IOS(测试过OC项目)项目的第三方库,创建一个Xcode的workspace来将这些第三方库和我们的工程相连接。 特点:自动化的、集中的、直观的管理第三方开源库。
安装CocoaPods:
CocoaPods需要Ruby环境,OSX自带。直接运行命令: $ sudo gem install cocoapods
安装结束的时后,执行命令: $ pod setup
安装可能遇到的问题:
如果没有反应,可能是https被墙,用以下命令更换域名: $ gem sources --remove https://rubygems.org/
$ gem sources --remove https://rubygems.org/
//要想验证是否替换成功了,可以执行: $ gem sources -l
//正常的输出是: *** CURRENT SOURCES ***
http://ruby.taobao.org/
gem版本过老 gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级gem,执行下述命令即可: $ sudo gem update --system
执行 pod setup 报错: /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs': Could not find 'cocoapods' (= 0) among 6 total gem(s) (Gem::LoadError) from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec' from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem' from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>'
这就是路径设置的问题,执行下列命令解决问题: $ rvm use ruby-1.9.3-p448
升级CocoaPods 升级很简单,再次执行安装命令即可 $ sudo gem install cocoapods
使用CocoaPods
进入项目目录, 创建Podfile: CocoaPods的一切都是从一个名为Podfile的文件开始的,先创建。 $touch Podfile
编辑Podfile(以安装Masonry为例) pod 'Masonry'
在Podfile文件所在目录,执行下列命令安装三方库: $ pod install
执行完成后,工程的根目录下多了三个东西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目录。 以前的工程文件不使用了,现在使用xxx.xcworkspace文件, 打开它就是我们的项目. 工程发生了以下变化:
第三方库会被编译成静态库供我们正真的工程使用: CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。 我们的工程和第三方库所在的工程会由一个新生成的workspace管理 为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。 —完—