允许滚动视图的高度根据图像大小而改变

Allow height of scroll view to change depending on image size

我在 UIScrollView 中有一个图像。图像的长度比设备屏幕尺寸大得多,这就是我将它放在滚动视图中的原因。但是,为了避免图像的裁剪和失真,我设置了约束,以便图像始终具有正确的纵横比。当你 运行 这在不同尺寸的屏幕上时,图像是不同尺寸的。现在我希望能够使滚动视图与我的图像大小相同,以便滚动视图永远不会比图像本身大。是否有一些代码可以让我的滚动视图始终与我的图像高度相同?我需要我的滚动视图根据图像的高度而改变,因为在不同的设备上我的图像的高度会改变。

到目前为止我有:

class Second : UIViewController {

@IBOutlet weak var myScrollView: UIScrollView!
@IBOutlet weak var myImage: UIImageView!

override func viewDidLoad() {

    ScrollView.contentSize.height = 1300

}

我对图像使用的约束是:

谢谢。非常感谢任何帮助!

您可以按以下方式在 viewDidLoad 中设置 UIScrollView contentSize 属性:

override func viewDidLoad() {
   myScrollView.contentSize = CGSize(width: widthYouWantToSet, height: heightYouWantToSet)
}

但是请注意,您可能会在应用中遇到旋转,如果高度发生变化,则需要更新。 希望对你有帮助。

试试这个,覆盖你的 'viewDidLayoutSubviews' 方法,你应该能够在该方法中获取图像的框架(你不会在 viewDidLoad 方法中获取图像的框架,请参阅参考资料 link 下面)。从框架中获取图像的高度,然后按照上面 Victor 的指示设置滚动视图的内容大小。让我知道它是否有效。

参考这个问题:iOS AutoLayout - get frame size width

应该是,

override func viewDidLoad() {

    myScrollView.contentSize.height = 1300

}