Masonry和Cocopods
Masonry 和 cocopods 介绍及安装步骤
Masonry 是什么、有什么用?
- 出处:Masonry是github开源项目: https://github.com/Masonry/Masonry,
- 作用:一个轻量级的布局框架, 封装了OC的自动布局。
- 特点:采用链式语法、简洁明了、可读性高。
- 平台:支持IOS、OSX。
安装方法(两种方法):
- 方法一、从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
- 如果没有反应,可能是https被墙,用以下命令更换域名:
- 升级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来进行项目管理。
—完—
- 第三方库会被编译成静态库供我们正真的工程使用:
Masonry和Cocopods相关推荐
- ios cocopods 安装使用及高级教程
CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的 ...
- iOS 自动布局框架 – Masonry 详解
来源:伯乐在线 - 刘小壮 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了 ...
- 用 jQuery Masonry 插件创建瀑布流式的页面(转)
瀑布流式的页面,最早我是在国外的一个叫 Pinterest 的网站上看到,这个网站爆发,后来国内的很多网站也使用了这种瀑布流方式来展示页面(我不太喜欢瀑布流这个名字). 我们可以使用 jQuery 的 ...
- Swift如何使用Masonry和SnapKit
SnapKit: https://github.com/SnapKit/SnapKit v.snp_makeConstraints { (make) in 由于swift和oc语法不一样 equalT ...
- iOS Masonry的使用详解
Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性,而且同时支持 iOS 和 Max OS X.Masonry是一个用代码写iOS或OS ...
- iOS开发之--Masonry多个平均布局
使用Masonry平均布局,代码如下: 1.创建 // 图片组数NSArray *imgAry = @[@"home_icon01",@"home_icon02" ...
- iOS自动布局框架-Masonry详解
目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较复杂的页面,还是需要通过代码来进行UI开发的.而且有很多比较老的项目,本身就还在采用纯 ...
- (0068)iOS开发之AutoLayout框架Masonry使用心得
苹果官方给出了一些有关自动布局的建议 不论用interfaceBuilder还是用代码来实现自动布局,这些建议都是适用的. (1)不用view的frame.bounds.center来指定view的形 ...
- iOS开发之Masonry框架-源码解析
Masonry是iOS在控件布局中经常使用的一个轻量级框架.Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...
最新文章
- 推动健全云生态 阿里云锐不可当
- Android四种Activity的加载模式(转)
- JAVA-封装-静态属性
- Python - MySQL数据库操作
- 用VirtualWifi软件实现无线网卡同时连接多个AP。
- Composer更新慢的终极解决方案-转
- 作为一个非天才型选手,普通程序员如何升级打怪?
- Nginx源码分析 - 实战篇 - 编写一个阶段化的模块(25)
- rar和zip文件加密的破解
- 在Linux虚拟机终端切换普通用户身份和root身份
- 【计算广告】基本概念及RTB/RTA投放策略介绍
- 智云通CRM:销售就是讲故事?
- WWW2023即将截稿
- pack_padded_sequence;pad_packed_sequence
- 演讲稿【物性的神奇】
- Hackintosh Dell vostro 5460 alpha v1.0 版本
- 表格分组标签:表格行分组中的隐藏功能
- python寻峰,LeetCode-python 162.寻找峰值
- PDF to Word Document Converter for Mac(PDF文档转换器)
- keras val_categorical_accuracy: 0.0000e+00问题
热门文章
- 火车头发布本地html,火车浏览器新浪博客自动调取本地文件发布脚本
- 中国合伙人正能量语句
- 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上
- mat java heap space_Memory Analyzer Tool定位Java heap space内存泄漏
- Tomcat的JVM配置:解决Out of memory:java head space
- SVN 常见问题解决
- 美油管运营商被勒索事件
- 微信分享朋友、朋友圈、QQ、QQ空间
- 新浪微博、微信朋友圈、qq空间分享---微信朋友圈
- 图片标注工具LabelImg的简单安装