我在swift中使用滚动视图面临这个奇怪的问题,即使在文件中定义滚动视图后图像也不滚动,我还添加了缩放功能,并且工作正常。请在这件事上给予我帮助 https://pastebin.com/1uC3fqHG
import UIKit
class ImageViewController: UIViewController
{
var imageURL: URL? {
didSet {
image = nil
if view.window != nil {
fetchImage()
}
}
}
private func fetchImage() {
if let url = imageURL {
let urlContents = try? Data(contentsOf: url)
if let imageData = urlContents {
image = UIImage(data: imageData)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(imageView)
imageURL = URL(string: "http://www.lamborghini.com/en-en/sites/en-en/files/DAM/lamborghini/share%20img/huracan-coupe-facebook-og.jpg")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if image == nil {
fetchImage()
}
}
@IBOutlet weak var scrollView: UIScrollView! {
didSet {
scrollView.delegate = self
scrollView.minimumZoomScale = 0.03
scrollView.maximumZoomScale = 2.0
scrollView.contentSize = imageView.frame.size
scrollView.addSubview(imageView)
}
}
fileprivate var imageView = UIImageView()
private var image: UIImage? {
get{
return imageView.image
}
set{
imageView.image = newValue
imageView.sizeToFit()
scrollView?.contentSize = imageView.frame.size
}
}
}
extension ImageViewController: UIScrollViewDelegate
{
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
}
答案 0 :(得分:0)
问题是您要将图像添加到viewDidLoad()中的视图中。从viewDidLoad()中删除view.addSubview(imageView)
,所有这些都将完美运行。
代码将如下
import UIKit
class ImageViewController: UIViewController
{
var imageURL: URL? {
didSet {
image = nil
if view.window != nil {
fetchImage()
}
}
}
private func fetchImage() {
if let url = imageURL {
let urlContents = try? Data(contentsOf: url)
if let imageData = urlContents {
image = UIImage(data: imageData)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
imageURL = URL(string: "http://www.lamborghini.com/en-en/sites/en-en/files/DAM/lamborghini/share%20img/huracan-coupe-facebook-og.jpg")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if image == nil {
fetchImage()
}
}
@IBOutlet weak var scrollView: UIScrollView! {
didSet {
scrollView.delegate = self
scrollView.minimumZoomScale = 0.03
scrollView.maximumZoomScale = 2.0
scrollView.contentSize = imageView.frame.size
scrollView.addSubview(imageView)
}
}
fileprivate var imageView = UIImageView()
private var image: UIImage? {
get{
return imageView.image
}
set{
imageView.image = newValue
imageView.sizeToFit()
scrollView?.contentSize = imageView.frame.size
}
}
}
extension ImageViewController: UIScrollViewDelegate
{
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
}
答案 1 :(得分:0)
您应该更新内容大小并更新图片视图约束Checkout tutorial