Anchorage快速上手指南:CocoaPods、Carthage、SPM三种安装方式一步到位(附Demo)
【免费下载链接】AnchorageA collection of operators and utilities that simplify iOS layout code.项目地址: https://gitcode.com/gh_mirrors/an/Anchorage
Anchorage 是一款轻量级 iOS 布局库,通过直观的 Swift 运算符把繁琐的 Auto Layout 约束代码简化为几行表达式。本文带你快速完成 Anchorage 的安装——覆盖 CocoaPods、Carthage、Swift Package Manager(SPM)三种方式,并运行内置 Demo 项目,10 分钟即可体验布局简化效果 🚀
为什么选择 Anchorage?
写 Auto Layout 时,你是否厌倦过这样的代码?
NSLayoutConstraint(item: view, attribute: .top, relatedBy: .equal, toItem: container, attribute: .top, multiplier: 1, constant: 8)Anchorage 构建在 Apple 官方NSLayoutAnchorAPI 之上(核心实现在 Source/NSLayoutAnchor+MultiplierConstraints.swift),把同样的约束写成:
view.topAnchor == container.topAnchor + 8每个表达式直接返回已激活的NSLayoutConstraint,一行代码即可完成布局。它支持 iOS、macOS、tvOS 三端,要求 Swift 4.0+,主源码仅集中在 Source 目录下的几个文件中,体积非常小巧。
安装方式一:CocoaPods 一键安装步骤
CocoaPods 是最省事的方式,在 Anchorage.podspec 中,Anchorage 已声明最低部署版本为 iOS 9.0 / tvOS 9.0 / macOS 10.11。
在项目根目录的
Podfile中添加:pod 'Anchorage'在终端执行
pod install,完成后用.xcworkspace文件打开工程。在代码中
import Anchorage即可开始使用。
安装方式二:Carthage 引入 Anchorage 最快配置
如果你使用 Carthage 管理依赖:
在
Cartfile中添加:github "Rightpoint/Anchorage"终端执行
carthage update构建框架。把生成的
Anchorage.framework拖入 Xcode 工程并勾选 Target 即可。
安装方式三:SPM(Swift Package Manager)添加 Anchorage
Anchorage 通过 Package.swift 原生支持 SPM(swift-tools-version 5.1),无需任何第三方插件:
图形界面:Xcode → File → Add Package Dependencies… → 添加本地或远程包地址,选择
Anchorage库产品。手动本地使用:先把仓库克隆到本地:
git clone https://gitcode.com/gh_mirrors/an/Anchorage然后在你的
Package.swift中通过.package(path: "Anchorage")引用,依赖产品名同为Anchorage,其源码路径已固定为 Source 目录。
运行 Demo:10 分钟体验 Anchorage 布局效果 📱
仓库自带完整的示例工程 AnchorageDemo,打开 Anchorage.xcodeproj,你会看到 5 个现成的 Scheme:
| Scheme | 用途 |
|---|---|
| AnchorageDemo | 运行 iOS 示例 App |
| Anchorage-iOS / Anchorage-macOS / Anchorage-tvOS | 构建三端框架 |
| RunAllTests | 一键跑完全部测试 |
Demo 主入口是 AnchorageDemo/RootViewController.swift,内置 5 个可交互的 Cell(源码位于 AnchorageDemo/Cells/ 目录),点击任意一行即可动态调整约束并看到布局动画:
- EdgeContainedLabelCell:边距(inset)内嵌布局
- MinimumWidthViewCell:
widthAnchor >= 100最小宽度约束 - ToggleActiveHeightCell:动态启用/停用高度约束
- EqualSpaceViewCell:多视图等间距排列
- AnimatableConstraintCell:约束动画过渡
选择AnchorageDemoScheme,选一台模拟器运行,就能看到上述效果。想本地验证构建流程的话,仓库 scripts 目录提供了自动化脚本,例如scripts/iOS_demo_Swift.sh会执行 iOS Demo 的 clean build,scripts/iOS_Swift.sh则跑完整测试(需传入 iOS 版本与 Swift 版本两个参数)。
常用运算符速查表
安装完成后,这几行就能覆盖 90% 的布局需求:
// 对齐:按钮距容器左边 12 pt button.leadingAnchor == container.leadingAnchor + 12 // 尺寸:固定宽高 imageView.sizeAnchors == CGSize(width: 100, height: 200) // 四边内嵌:一次约束全部边缘 imageView.edgeAnchors == container.edgeAnchors + UIEdgeInsets(top: 5, left: 10, bottom: 15, right: 20) // 优先级:~ 指定约束优先级(枚举定义见 Source/Priority.swift) view.centerXAnchor == container.centerXAnchor + 20 ~ .low⚠️ 两个实用提示:
- 编译时间:运算符重载会略微增加编译耗时,可用
/==/、/>=/、/<=/替代==、>=、<=提速。 - translatesAutoresizingMaskIntoConstraints:Anchorage 会自动把表达式左侧视图的该属性设为
false,建议始终让子视图写在等号左边。
常见问题 FAQ
Q1:Anchorage 支持哪些平台?iOS 9+、tvOS 9+、macOS 10.11+(见 Package.swift 与 podspec 声明),Swift 4.0 / 4.2 / 5.0 均可编译。
Q2:想让约束默认不激活怎么办?使用Anchorage.batch(active: false) { ... }批量收集,之后再统一NSLayoutConstraint.activate(_:)激活,性能更好。
Q3:单元测试在哪里?AnchorageTests/AnchorageTests.swift 覆盖了全部运算符行为,运行 RunAllTests Scheme 即可一键验证。
写在最后
至此,Anchorage 的三种安装方式与 Demo 运行都已一步到位。无论是 CocoaPods 的简单、Carthage 的静态框架,还是 SPM 的原生集成,任选其一,你都能在几分钟内把 Auto Layout 代码量砍掉一大半——这正是 Anchorage「让布局从未如此简单」的初衷 ✨
【免费下载链接】AnchorageA collection of operators and utilities that simplify iOS layout code.项目地址: https://gitcode.com/gh_mirrors/an/Anchorage
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考