繁体   English   中英

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

[英]Allow height of scroll view to change depending on image size

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

到目前为止,我有:

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方法中获取图像的框架,请参见下面的参考链接)。 从框架中,获取图像的高度,然后按照上面的Victor的指示设置滚动视图的内容大小。 让我知道它是否有效。

请参阅以下问题以供参考: iOS AutoLayout-获取框架大小宽度

应该,

override func viewDidLoad() {

    myScrollView.contentSize.height = 1300

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM