无法使用Parse在滚动视图中缩放UIImage

问题描述 投票:2回答:1

谁可以帮助缩放滚动视图。使用Parse获取图片,但无法做缩放。通过所有可能的功能不起作用 - 这是(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
    }
}
ios swift uiscrollview uiimageview uiimage
1个回答
2
投票

我认为您不需要ScrollView并管理Pagingnation。你需要CollectionView只需启用分页选项从故事无聊。

  1. 在ViewController中拖动集合视图。从属性选择器启用分页选项。
  2. 将CollectionView(leadingtrailingtopbottom)分配给View(leadingtrailingtopbottom
  3. 将CollectionView单元格拖到CollectionView中。调整单元格大小以填充整个CollectionView
  4. 将Scrollview添加到CollectionView单元格并添加ScrollView(leadingtrailingtopbottom)== CollectionView单元格(leadingtrailingtopbottom
  5. 在Scrollview中添加imageView并添加imageView(leadingtrailingtopbottom)== Scrollview(leadingtrailingtopbottom)和相等的宽度和高度到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

© www.soinside.com 2019 - 2024. All rights reserved.