UIScrollView 无法在纵向或横向模式下显示图像

Posted

技术标签:

【中文标题】UIScrollView 无法在纵向或横向模式下显示图像【英文标题】:UIScrollView cannot display image either in Portrait or Landscape mode 【发布时间】:2015-08-17 11:46:10 【问题描述】:

我在情节提要中创建了一个横向方向的 VC

我在里面加了一个UIIScrollView,比如说在VC里面做:(w)1000, 500(h)。

我想做的事:

1) 在ScrollView 内滚动图像(高分辨率,如 1334 x 750) 2) 以横向模式查看ScrollView 中的图像

要让 ScrollView 显示图像,我必须在 `viewDidAppear` 中进行 但这里有问题: 1) `ScrollView` 的 Width 和 height 消失了 2) 顶部的标签不见了。 3) `ScrollView` 尺寸变小,例如 200 x 150,并从顶角开始,例如 (0,0) 我需要做些什么才能使 `scrollview` 大小像 1000 x 500 之前一样? --- 更新 -- 类视图控制器:UIViewController,UIScrollViewDelegate @IBOutlet 弱 var myUIScrollView:UIScrollView! var imgView:UIImageView! 覆盖 func viewDidLoad() super.viewDidLoad() //-- 强制为横向模式: 让值 = UIInterfaceOrientation.LandscapeLeft.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation") self.myUIScrollView.maximumZoomScale = 10.0 self.myUIScrollView.minimumZoomScale = 1.0 self.myUIScrollView.delegate = self imgView = UIImageView(图片: UIImage(named: "MyPhoto.png")) 覆盖 func viewDidAppear(动画:布尔) self.myUIScrollView.contentSize = imgView.bounds.size self.myUIScrollView.addSubview(imgView) view.addSubview(myUIScollView) 覆盖 func shouldAutorotate() -> Bool 返回真 func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? 返回 imgView

【问题讨论】:

如果你使用 Xcode 资源并且你有一个名为 my-image 的图像集合,你必须使用 UIImage(name: "my-image")。 不工作。假设我在 Xcasset 调用中创建了图像集: Photo1 和我把 MyPhoto.png ,MyPhoto1.png , MyPhoto2.png ,..in 它。我按照你的方法。我使用 UIImage(named: "Photo1"),它不起作用。 您必须为每个图像创建一个图像集,并且空间是 image1.png、image1@2x.png 和 image1@3x.png 三种尺寸,然后您可以使用名称初始化 UIImage “图像1”。 更改viewDidAppear中的代码后,显示图像现在可以了。现在的问题是 Scrollview 在我更新的代码中变得如此之小。它粘在顶角。 【参考方案1】:

试试这个:

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate 

var image: UIImage!
    get
        return myImageView.image!
    set
        myImageView.image = newValue
        myImageView.sizeToFit()
        myScrollView.contentSize = myImageView.frame.size
    


var myImageView = UIImageView()

@IBOutlet weak var myScrollView: UIScrollView!
    didSet
        myScrollView.delegate = self
        myScrollView.minimumZoomScale = 10.0
        myScrollView.maximumZoomScale = 1.0
        myScrollView.addSubview(myImageView)
    


override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    image = UIImage(named: "one")


func viewForZooming(in scrollView: UIScrollView) -> UIView? 
    return myImageView


【讨论】:

以上是关于UIScrollView 无法在纵向或横向模式下显示图像的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Autolayout 正确构建 UIScrollView

从横向切换到纵向后,将 UIScrollView 保持在正确的位置

UIScrollView 仅适用于横向

纵向xib调整为横向时需要改变UIScrollView contentSize

UIScrollView 不旋转到横向

将 UIImageView 对齐到 UIScrollView 的底部