swift - 使用 Swift、自动布局和 SnapKit 自动缩放带有 UIImageView 的 UIScrollView 内容

标签 swift uiscrollview uiimageview autolayout snapkit

我在 Interface Builder 中设置了一个具有以下 View 结构的 View Controller :

- UIView
   * UIScrollView
      * UIImageView

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

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

最佳答案

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

  • 在 Interface Builder 中,选择 View Controller 并通过选择编辑器/解决自动布局问题/添加缺少的约束来创建所有缺少的约束
  • 手动选择所有生成的约束,并从属性检查器中选择占位符/在构建时删除
  • 分配UIScrollViewUIImageView 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/

相关文章:

ios - 使用 Swift/SKScene 检测触摸

ios - UIScrollView 的所有图像都放在开头

ios - UIScrollView 内部的动态 UIStackView

ios - 设置图像属性后,圆形 imageView 的边框不平滑

swift - 很热衷于在另一个 scn 对象中使用我在一个 scn 对象中创建的 Material ?

ios - 使用取消和保存按钮操作将 Swift DatePicker 显示到 UIAlertController

ios - 更改 ViewController Swift 的背景颜色? (单 View 应用程序)

iphone - UIButton 不允许 UIScrollView 滚动

ios - UIImageView 捏缩放并重新定位以适合覆盖

ios - 如何创建对角线切割 View 以在配置文件屏幕中使用?