当scrollview和图像视图都在故事板中时,图像不滚动

时间:2016-09-28 15:29:17

标签: ios iphone ipad swift3 xcode8

我使用Xcode 8创建了一个示例项目,其中一个故事板具有滚动视图和图像视图作为scrollview的子视图。图像视图的内容模式设置为居中。 Scrollview不会滚动。

![Here are the constraints in the story board: scrollView] 1

这是代码

import UIKit

类ViewController:UIViewController {

@IBOutlet weak var imageView: UIImageView!

@IBOutlet weak var scrollView: UIScrollView!

override func viewDidLoad() {
    super.viewDidLoad()
    imageURL = "http://www.hdwallpapers.in/walls/cosmea_floral_bloom-wide.jpg"
}

var imageURL: String? {
    didSet {
        updateImage()
        scrollView.contentSize = imageView.frame.size
    }
}

func updateImage() {
    if let data = NSData(contentsOf: URL(string:imageURL! )!) {
        imageView.image = UIImage(data: data as Data)
        imageView.sizeToFit()
    }
}

}

但是,当我以编程方式创建imageView时,scrollView正常工作。我在上面的代码中缺少什么?以下代码

import UIKit

class ImageViewController:UIViewController {

var image: UIImage? {
    get {
        return imageView.image
    }
    set {
        imageView.image = newValue
        imageView.sizeToFit()
    }
}

var imageUrl: URL? {
    didSet {
        image = nil
        fetchImage(url: imageUrl)
    }
}

func fetchImage(url: URL?) {
    let data = NSData(contentsOf: url!)
    image = UIImage(data: data as! Data)!
}

var imageView = UIImageView()

@IBOutlet weak var scrollView: UIScrollView!

override func viewDidLoad() {
    super.viewDidLoad()
    imageUrl = ImageData.imageURL(for: ImageData.images["imageOne"]!)!
    scrollView.addSubview(imageView)
    scrollView.contentSize = imageView.frame.size
}

}

1 个答案:

答案 0 :(得分:1)

您应该删除对齐中心X并对齐中心Y约束。这些约束将图像视图保持在原位,不允许滚动。

删除它们时,您可能会遇到约束错误。这是因为在设计时你的布局是模棱两可的。图像视图的内在大小基于图像,但您希望在运行时设置图像。要解决此问题,您应选择图像视图,转到尺寸检查器,单击内在尺寸下拉菜单并设置占位符尺寸。占位符大小仅在设计时使用,并在运行时替换。

相关问题