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

问题描述 投票:0回答:3

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

到目前为止我有:

class Second : UIViewController {

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

override func viewDidLoad() {

    ScrollView.contentSize.height = 1300

}

我在图像上使用的约束是:

  • 滚动视图的宽度相等
  • 在滚动视图中水平输入
  • 顶部空间到scrollview的顶部
  • 宽松适合(因此图像不会扭曲)

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

ios swift uiscrollview uiimageview
3个回答
0
投票

试试这个,覆盖你的'viewDidLayoutSubviews'方法,你就可以在该方法中获得图像的帧(你不会在viewDidLoad方法中得到图像的帧,参见下面的参考链接)。从框架中,获取图像的高度,然后按上面Victor所指示的滚动视图设置内容大小。如果有效,请告诉我。

请参阅此问题以供参考:iOS AutoLayout - get frame size width


0
投票

您可以在UIScrollView中设置contentSize viewDidLoad属性,如下所示:

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

但是,请注意,您可以在应用中体验旋转,如果高度发生变化,则需要更新。我希望这对你有帮助。


0
投票

应该,

override func viewDidLoad() {

    myScrollView.contentSize.height = 1300

}
© www.soinside.com 2019 - 2024. All rights reserved.