gpt4 book ai didi

ios - 如何在 UIScrollView 中实现缩放图像?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:35 26 4
gpt4 key购买 nike

我的 ScrollView 运行流畅。我已经将图像存入 Assets 库。名字是从 1 开始到 39 结束吗?我想放大我的图像。我尝试了不同的方法,但我无法成功。

这是我的代码:

import UIKit

class fotolarView: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var mainScroolView: UIScrollView!

var imageArray = [UIImage]()

override func viewDidLoad() {
super.viewDidLoad()

mainScroolView.delegate = self
mainScroolView.frame = view.frame

imageArray = [#imageLiteral(resourceName: "1"), #imageLiteral(resourceName: "2"), #imageLiteral(resourceName: "3"), #imageLiteral(resourceName: "4"), #imageLiteral(resourceName: "5"), #imageLiteral(resourceName: "6"), #imageLiteral(resourceName: "7"), #imageLiteral(resourceName: "10"), #imageLiteral(resourceName: "8"), #imageLiteral(resourceName: "9"), #imageLiteral(resourceName: "11"), #imageLiteral(resourceName: "12"), #imageLiteral(resourceName: "20"), #imageLiteral(resourceName: "13"), #imageLiteral(resourceName: "21"), #imageLiteral(resourceName: "22"), #imageLiteral(resourceName: "15"), #imageLiteral(resourceName: "23"), #imageLiteral(resourceName: "16"), #imageLiteral(resourceName: "31"), #imageLiteral(resourceName: "24"), #imageLiteral(resourceName: "17"), #imageLiteral(resourceName: "25") , #imageLiteral(resourceName: "32"), #imageLiteral(resourceName: "33"), #imageLiteral(resourceName: "19"), #imageLiteral(resourceName: "26"), #imageLiteral(resourceName: "34"), #imageLiteral(resourceName: "27"), #imageLiteral(resourceName: "35"), #imageLiteral(resourceName: "28"), #imageLiteral(resourceName: "29"), #imageLiteral(resourceName: "36"), #imageLiteral(resourceName: "37"), #imageLiteral(resourceName: "38"), #imageLiteral(resourceName: "39")]

for i in 0..<imageArray.count {
let imageView = UIImageView()
imageView.image = imageArray[i]
imageView.isUserInteractionEnabled = true
imageView.contentMode = .scaleAspectFit
let xPozition = self.view.frame.width * CGFloat(i)
imageView.frame = CGRect(x: xPozition, y: 0, width: self.mainScroolView.frame.width, height: self.mainScroolView.frame.height)
mainScroolView.contentSize.width = mainScroolView.frame.width * CGFloat(i + 1)
mainScroolView.addSubview(imageView)
}
}
}

最佳答案

var scrollView: UIScrollView!
var imageView: UIImageView!

override func viewDidLoad()
{
super.viewDidLoad()
imageView = UIImageView(image: UIImage(named: "image.png"))
scrollView = UIScrollView(frame: view.bounds)
scrollView.backgroundColor = UIColor.black
scrollView.contentSize = imageView.bounds.size
scrollView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
scrollView.contentOffset = CGPoint(x: 1000, y: 450)

scrollView.addSubview(imageView)
view.addSubview(scrollView)

scrollView.delegate = self

setZoomScale()

setupGestureRecognizer()
}

func viewForZooming(in scrollView: UIScrollView) -> UIView?
{
return imageView
}

override func viewWillLayoutSubviews()
{
setZoomScale()
}

func scrollViewDidZoom(_ scrollView: UIScrollView)
{
let imageViewSize = imageView.frame.size
let scrollViewSize = scrollView.bounds.size

let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height) / 2 : 0
let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width) / 2 : 0

scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding)
}

func setZoomScale()
{
let imageViewSize = imageView.bounds.size
let scrollViewSize = scrollView.bounds.size
let widthScale = scrollViewSize.width / imageViewSize.width
let heightScale = scrollViewSize.height / imageViewSize.height

scrollView.minimumZoomScale = min(widthScale, heightScale)
scrollView.zoomScale = 1.0
}

func setupGestureRecognizer()
{
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(ScrollViewController.handleDoubleTap(_:)))
doubleTap.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(doubleTap)
}

func handleDoubleTap(_ recognizer: UITapGestureRecognizer)
{
if (scrollView.zoomScale > scrollView.minimumZoomScale)
{
scrollView.setZoomScale(scrollView.minimumZoomScale, animated: true)
} else {
scrollView.setZoomScale(scrollView.maximumZoomScale, animated: true)
}
}

关于ios - 如何在 UIScrollView 中实现缩放图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41972578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com