使用Swift,autolayout和SnapKit自动使用UIImageView缩放内容制作UIScrollView

时间:2016-04-27 11:45:20

标签: swift uiscrollview uiimageview autolayout snapkit

我在Interface Builder中设置了一个视图控制器,其中包含以下视图结构:

- UIView
   * UIScrollView
      * UIImageView

我想将图片分配给UIImageView,因此滚动视图(及其内容大小)将采用与图像相同的宽度并自动计算根据图像宽高比的内容大小的高度。 (这使得图像可以在UIScrollView内垂直滚动。)

我正在使用Swift和Interface Builder + SnapKit来管理自动布局约束。

1 个答案:

答案 0 :(得分:1)

我设法通过以下方式使用SnapKit进行约束:

  • 在Interface Builder中,选择视图控制器并通过选择编辑 / 解决自动布局问题 / 添加缺失约束 <来创建所有缺少的约束/ LI>
  • 手动选择所有生成的约束,然后从属性检查器
  • 中选择占位符 / 在构建时删除
  • UIScrollViewUIImageView出口分配给视图控制器
  • 将图片分配给UIImageView

然后按如下方式实现视图控制器:

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)
        }
    }
}