[英]Unable to scroll image using scroll view in swift
I am facing this weird problem with scroll view in swift, The image does not scroll even after defining scroll view in the file, I have also added zooming and it worked fine.我在 swift 中遇到了滚动视图这个奇怪的问题,即使在文件中定义了滚动视图后,图像也不会滚动,我还添加了缩放并且工作正常。 Please help me with this https://pastebin.com/1uC3fqHG
请帮我解决这个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
}
}
the problem is that you are adding the image to the view in viewDidLoad().问题是您正在将图像添加到 viewDidLoad() 中的视图。 Remove
view.addSubview(imageView)
from the viewDidLoad() and all will be working perfectly.从 viewDidLoad() 中删除
view.addSubview(imageView)
) ,一切都会完美运行。 Code will become as follows代码会变成如下
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
}
}
您应该更新内容大小并更新图像视图约束 查看本教程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.