ios - 无法使用 Parse 缩放 ScrollView 中的 UIImage

标签 ios swift uiscrollview uiimageview uiimage

谁可以帮助缩放 ScrollView 。使用Parse获取图片,但无法缩放。 通过所有可能的功能都不起作用 - aImg 这是(UIImage)到 setupPhotosInScrollView 函数,任何人都可以帮忙吗?尝试过框架但没有任何帮助


代码

class AdPhotos: UIViewController, UIScrollViewDelegate {

    /*--- VIEWS ---*/
    @IBOutlet weak var containerScrollView: UIScrollView!


    /*--- VARIABLES ---*/
    var adObj = PFObject(className: ADS_CLASS_NAME)
    var photosArray = [UIImage]()



    // ------------------------------------------------
    // MARK: - VIEW DID LOAD
    // ------------------------------------------------
    override func viewDidLoad() {
        super.viewDidLoad()

        // Ad Title
        adTitleLabel.text = "\(adObj[ADS_TITLE]!)"

        // Get photos
        let imageFile = adObj[ADS_IMAGE1] as? PFFile
        imageFile?.getDataInBackground(block: { (data, error) in
            if error == nil { if let imageData = data {
                self.photosArray.append(UIImage(data: imageData)!)
                self.setupPhotosInScrollView()
                print("PHOTO 1")
                }}})

        DispatchQueue.main.async {

            if self.adObj[ADS_IMAGE2] != nil {
                self.pageControl.numberOfPages = 2
                let imageFile = self.adObj[ADS_IMAGE2] as? PFFile
                imageFile?.getDataInBackground(block: { (data, error) in
                    if error == nil { if let imageData = data {
                        self.photosArray.append(UIImage(data: imageData)!)
                        self.setupPhotosInScrollView()
                        print("PHOTO 2")
                        }}})
            }
            if self.adObj[ADS_IMAGE3] != nil {
                self.pageControl.numberOfPages = 3
                let imageFile = self.adObj[ADS_IMAGE3] as? PFFile
                imageFile?.getDataInBackground(block: { (data, error) in
                    if error == nil { if let imageData = data {
                        self.photosArray.append(UIImage(data: imageData)!)
                        self.setupPhotosInScrollView()
                        print("PHOTO 3")
                        }}})
            }
            if self.adObj[ADS_IMAGE4] != nil {
                self.pageControl.numberOfPages = 4
                let imageFile = self.adObj[ADS_IMAGE4] as? PFFile
                imageFile?.getDataInBackground(block: { (data, error) in
                    if error == nil { if let imageData = data {
                        self.photosArray.append(UIImage(data: imageData)!)
                        self.setupPhotosInScrollView()
                        print("PHOTO 4")
                        }}})
            }
            if self.adObj[ADS_IMAGE5] != nil {
                self.pageControl.numberOfPages = 5
                let imageFile = self.adObj[ADS_IMAGE5] as? PFFile
                imageFile?.getDataInBackground(block: { (data, error) in
                    if error == nil { if let imageData = data {
                        self.photosArray.append(UIImage(data: imageData)!)
                        self.setupPhotosInScrollView()
                        print("PHOTO 5")
                        }}})
            }

        }
    }
    // ------------------------------------------------
    // MARK: - SETUP PHOTOS IN SCROLLVIEW
    // ------------------------------------------------
    @objc func setupPhotosInScrollView() {
        var X:CGFloat = 0
        let Y:CGFloat = 0
        let W:CGFloat = view.frame.size.width
        let H:CGFloat = view.frame.size.height
        let G:CGFloat = 0
        var counter = 0

        // Loop to create ImageViews
        for i in 0..<photosArray.count {
            counter = i

            // Create a ImageView
            let aImg = UIImageView(frame: CGRect(x: X, y: Y, width: W, height: H))
            aImg.tag = i
            aImg.contentMode = .scaleAspectFit
            aImg.image = photosArray[i]


            // Add ImageViews based on X
            X += W + G
            containerScrollView.addSubview(aImg)

        } // ./ FOR loop

        // Place Buttons into a ScrollView
        containerScrollView.contentSize = CGSize(width: W * CGFloat(counter+2), height: H)
    }


    // ------------------------------------------------
    // MARK: - CHANGE PAGE CONTROL PAGES ON SCROLL
    // ------------------------------------------------
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let pageWidth = containerScrollView.frame.size.width
        let page = Int(floor((containerScrollView.contentOffset.x * 2 + pageWidth) / (pageWidth * 2)))
        pageControl.currentPage = page
    }
}

最佳答案

我认为你不需要 ScrollView 和管理 Pagingnation。您需要 CollectionView,只需启用分页选项来自无聊的故事。

  1. 将 Collection View 拖动到 ViewController 中。启用分页选项 来自属性选择器。

  2. 将 CollectionView(leading, trailing, top, bottom) 分配给 View( >前导尾随顶部底部)

  3. 将 CollectionView 单元格拖动到 CollectionView 中。调整单元格大小以填充 整个 CollectionView

  4. 将 Scrollview 添加到 CollectionView 单元格中并添加 ScrollView(leading, 尾部顶部底部) == CollectionView单元格(前导, 尾部顶部底部)

  5. 在Scrollview中添加imageView,并添加imageView(leading, 尾随顶部底部) == Scrollview (前导尾部顶部底部) 并且与 CollectionView 单元格的宽度和高度相等。

  6. 为 CollectionView 实现 DataSourceDelegate 方法。

为了缩放,将以下代码添加到您的 CollectionView 单元格

import UIKit

class CustomeCellCollectionViewCell: UICollectionViewCell , UIScrollViewDelegate {

    @IBOutlet var imageView : UIImageView!
    @IBOutlet var scrollView : UIScrollView!

    override func awakeFromNib() {
        super.awakeFromNib()

        scrollView.delegate = self
        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 6.0
    }

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

        return feedsImageView
    }
}

enter image description here

关于ios - 无法使用 Parse 缩放 ScrollView 中的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53073639/

相关文章:

ios - 无法计算出可垂直扩展的 UITableViewCells 来显示按钮

xcode - 错误: "Use of declared type ' CAPSMenu' "

ios - 如何在紧凑型设备上快速正确使用 splitViewController 中的 didSelectRowAt ?

ios - ScrollView 中图像的自动布局

ios - Apple 是否批准检查设备上是否安装了另一个应用程序?

ios - 自定义 UISlider 的辅助功能

ios - SpriteKit 中的 ScrollView

ios - 内容偏移量不起作用

android - Flutter 中手掌检测/扫描功能的用途

swift - 带反斜杠的 JSON 编码