我在 Interface Builder 中设置了一个具有以下 View 结构的 View Controller :
- UIView
* UIScrollView
* UIImageView
我想将图像分配给UIImageView
,以便 ScrollView (及其内容大小)将采用与图像中相同的宽度并自动计算根据图像长宽比的内容大小的高度。 (这使得图像可以在 UIScrollView
内垂直滚动。)
我使用 Swift 和 Interface Builder + SnapKit 来管理自动布局约束。
最佳答案
我设法通过以下方式使用 SnapKit 进行约束:
- 在 Interface Builder 中,选择 View Controller 并通过选择编辑器/解决自动布局问题/添加缺少的约束来创建所有缺少的约束里>
- 手动选择所有生成的约束,并从属性检查器中选择占位符/在构建时删除
- 分配
UIScrollView
和UIImageView
View Controller 的导出 - 将图像分配给
UIImageView
然后按如下方式实现 View Controller :
import UIKit
import SnapKit
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.snp.makeConstraints { (make) in
make.edges.equalTo(view)
}
let ratio = imageView.image!.size.height / imageView.image!.size.width
imageView.snp.makeConstraints { (make) in
make.top.equalTo(0.0)
make.bottom.equalTo(scrollView.snp.bottom)
make.width.equalTo(view.snp.width)
make.height.equalTo(scrollView.snp.width).multipliedBy(ratio)
}
}
}
关于swift - 使用 Swift、自动布局和 SnapKit 自动缩放带有 UIImageView 的 UIScrollView 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888824/