1

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

- UIView
   * UIScrollView
      * UIImageView

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

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

4

1 回答 1

1

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

  • 在 Interface Builder 中,选择视图控制器并通过选择Editor / Resolve Auto Layout Issues / Add Missing Constraints创建所有缺少的约束
  • 手动选择所有生成的约束并在构建时Attributes Inspector中选择Placeholder / Remove
  • 分配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)
        }
    }
}
于 2016-04-27T11:49:33.643 回答