文章插图
这里可以看到
UILabel
和UIButton
虽然都继承了UIView
, 但是UIButton
的继承层次更深一些, 它还继承了了UIControl
.可以看到和UIButton平级的还有好几个子类.
Controls使用的是target-action机制, 所有的action都通过方法:
addTarget(_:action:for:)
添加.约束Constraints当在代码中设置约束时, 有三种选择:
- 使用layout anchors.
- 使用
NSLayoutConstraint
类. - 使用Visual Format Language.
初级单个写法:
buttonsView.topAnchor.constraint(equalTo: view.centerYAnchor).isActive = truebuttonsView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = truebuttonsView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = truebuttonsView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
放进数组里批量激活写法:NSLayoutConstraint.activate([buttonsView.topAnchor.constraint(equalTo: view.centerYAnchor),buttonsView.bottomAnchor.constraint(equalTo: view.bottomAnchor),buttonsView.leadingAnchor.constraint(equalTo: view.leadingAnchor),buttonsView.trailingAnchor.constraint(equalTo: view.trailingAnchor),])
感觉是对新手比较直观的一种写法.其他写法文末有参考文档.
PS: 项目中更流行用 SnapKit.
区域限制
safeAreaLayoutGuide
: 去掉圆角和刘海.layoutMarginsGuide
: safe area的内部再加上一些额外的margin.
- 友情提示: 在xcode里就可以看官方文档, 快捷键是
Cmd + Shift + 0
.
- UIKit Documentation
- UIKit Catalog
- https://codewithchris.com/swift-tutorial-complete/#uikit
- Programmatically Creating Constraints
推荐阅读
- PHP Phar反序列化学习
- 【软件学习】怎么在Word里面设置MathType分隔符,使公式按照章节自动编号
- 一 RNN自学理解
- 跳舞机怎么玩?我是新手怎么学(怎么快速学会玩跳舞机)
- [Android开发学iOS系列] ViewController
- KMP模式匹配 学习笔记
- 十 Netty 学习:ChannelPipeline源码说明
- 驱动开发:内核中实现Dump进程转储
- GitHub 供应链安全已支持 Dart 开发者生态
- 驱动开发:内核R3与R0内存映射拷贝