Cartography 是用来声明 Swift 中的 auto Layout,无需输入任何 stringly 就可设置自己 auto Layout 的约束声明。
目录 快速学会Swift第三方库 Cartography篇 目录 编码之前 导入 Cartography 其他 *** 作 基本约束 示例代码 运行结果 替换约束 示例代码 运行结果 复合约束与对齐 示例代码 运行结果 边距 示例代码 运行结果 深入学习 编码之前 导入 Cartography推荐使用CocoaPods进行导入,CocoaPods是一个负责管理iOS项目中第三方开源库的工具,安装CocoaPods之后使用命令行就能轻松地对所有第三方开源库进行安装和更新,而不需要每次上GitHub去下载。
CocoaPods的安装过程传送门:iOS 9 导入类库全面详尽过程(Ruby安装->CocoaPods安装->导入类库)
手动下载:GitHub-Cartography主页
装好CocoaPods后,修改Podfile文件内容为如下:
source 'https://github.com/CocoaPods/Specs.git'platform :ios,'9.0'use_frameworks!target 'Web' dopod 'Cartography','~> 0.6.0'endxcodeproj 'Desktop/Web/Web.xcodeproj'
target后面为工程名,最后一行为工程路径(这里的Web是我的工程名)
再执行命令:
$ pod install
其他 *** 作 另外还需要在Target->工程名->Build Settings->Search Paths->User header Search Paths处添加Cartography所在的目录:
最后在你需要用到Cartography的类中加上:
import Cartography
基本约束 示例代码 func baseConstrain() { let vIEw1 = UIVIEw() let vIEw2 = UIVIEw() vIEw1.backgroundcolor = UIcolor.bluecolor() vIEw2.backgroundcolor = UIcolor.redcolor() self.vIEw.addSubvIEw(vIEw1) self.vIEw.addSubvIEw(vIEw2) constrain(vIEw1,vIEw2) { (vIEw1,vIEw2) in //vIEw宽度等于父视图宽度-50的一半 vIEw1.wIDth == (vIEw1.supervIEw!.wIDth - 50) * 0.5 //vIEw2的宽度等于vIEw1宽度-50 vIEw2.wIDth == vIEw1.wIDth - 50 //vIEw的高度等于40 vIEw1.height == 40 //vIEw2的高度等于vIEw1的高度 vIEw2.height == vIEw1.height //vIEw1水平居中 vIEw1.centerX == vIEw1.supervIEw!.centerX //vIEw2和vIEw1中心水平对齐 vIEw2.centerX == vIEw1.centerX //vIEw1的顶部离父视图的顶部距离大于20 vIEw1.top >= vIEw1.supervIEw!.top + 20 //vIEw2的顶部离vIEw1的底部距离等于20 vIEw2.top == vIEw1.bottom + 20 } }运行结果 替换约束 示例代码
func replaceConstrain() { let vIEw = UIVIEw() vIEw.backgroundcolor = UIcolor.bluecolor() self.vIEw.addSubvIEw(vIEw) constrain(vIEw) { (vIEw) in vIEw.wIDth == 100 vIEw.height == 100 } let group = ConstraintGroup() //设定vIEw位置于左上角 constrain(vIEw,replace: group) { (vIEw) in vIEw.top == vIEw.supervIEw!.top vIEw.left == vIEw.supervIEw!.left } //设定vIEw位置于右下角 constrain(vIEw,replace: group) { (vIEw) in vIEw.bottom == vIEw.supervIEw!.bottom vIEw.right == vIEw.supervIEw!.right } //执行动画 UIVIEw.animateWithDuration(0.5,animations: vIEw.layoutIfNeeded) }运行结果
可以看到vIEw从左上角移动到右下角,最终如下所示:
func aligning() { let vIEw1 = UIVIEw() let vIEw2 = UIVIEw() let vIEw3 = UIVIEw() vIEw1.backgroundcolor = UIcolor.bluecolor() vIEw2.backgroundcolor = UIcolor.redcolor() vIEw3.backgroundcolor = UIcolor.greencolor() self.vIEw.addSubvIEw(vIEw1) self.vIEw.addSubvIEw(vIEw2) self.vIEw.addSubvIEw(vIEw3) constrain(vIEw1,vIEw2,vIEw3) { (vIEw1,vIEw3) in //复合约束,vIEw1大小为父视图的1/4,位置居中 vIEw1.size == vIEw1.supervIEw!.size / 4 vIEw1.center == vIEw1.supervIEw!.center vIEw2.size == vIEw1.size / 2 vIEw3.size == vIEw1.size / 3 //3个vIEw的顶部对齐 align(top: vIEw1,vIEw3) //3个vIEw水平均匀分布,相邻vIEw之间距离为10 distribute(by: 10,horizontally: vIEw1,vIEw3) } }运行结果 边距 示例代码
func edge() { let vIEw = UIVIEw() vIEw.backgroundcolor = UIcolor.bluecolor() self.vIEw.addSubvIEw(vIEw) constrain(vIEw) { (vIEw) in //vIEw与父视图的上下左右边距均为20 vIEw.edges == inset(vIEw.supervIEw!.edges,20,20) } }运行结果 深入学习
这里列出了最主要的几种约束,如果你希望能够更加深入地学习Cartography,可以前往GitHub-Cartography主页
总结以上是内存溢出为你收集整理的[快速学会Swift第三方库] Cartography篇全部内容,希望文章能够帮你解决[快速学会Swift第三方库] Cartography篇所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)