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

时间:2015-08-01 18:22:01

标签: ios swift uiscrollview uiimageview

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

到目前为止,我有:

class Second : UIViewController {

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

override func viewDidLoad() {

    ScrollView.contentSize.height = 1300

}

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

  • 滚动视图的相等宽度
  • 在滚动视图中水平输入
  • 滚动视图顶部的顶部空间
  • 纵横比适合(因此图像不会失真)

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

3 个答案:

答案 0 :(得分:0)

您可以按照以下方式在UIScrollView中设置viewDidLoad contentSize媒体资源:

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

应该是,

override func viewDidLoad() {

    myScrollView.contentSize.height = 1300

}