我使用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
}
}
答案 0 :(得分:1)
您应该删除对齐中心X并对齐中心Y约束。这些约束将图像视图保持在原位,不允许滚动。
删除它们时,您可能会遇到约束错误。这是因为在设计时你的布局是模棱两可的。图像视图的内在大小基于图像,但您希望在运行时设置图像。要解决此问题,您应选择图像视图,转到尺寸检查器,单击内在尺寸下拉菜单并设置占位符尺寸。占位符大小仅在设计时使用,并在运行时替换。