Scrollview无法向右滚动

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

我具有滚动视图,并且我想以水平滚动方式显示用户选择的图像。以下是我的代码。但是,我无法实现这一目标。请指导我。

var xPosition: CGFloat = 0
var scrollViewContentWidth: CGFloat = 398

func handlePickedImage(image: UIImage){
    let imageView = UIImageView(image: image)
    imageView.frame = CGRect(x: 0, y: 0, width: 398, height: 188)
    imageView.contentMode = UIView.ContentMode.scaleAspectFit
    imageView.frame.origin.x = xPosition
    imageView.frame.origin.y = 10


    let spacer: CGFloat = 10
    xPosition = 398 + spacer
    scrollViewContentWidth = scrollViewContentWidth + spacer
    imageScrollView.contentSize = CGSize(width: scrollViewContentWidth, height: 188)
    imageScrollView.addSubview(imageView)
}
ios swift uiscrollview
1个回答
0
投票

我使用此代码创建的代码中也实现了分页:

import UIKit

class ImagePagerViewController: UIViewController {
    @IBOutlet weak var collectionView: UICollectionView!

    var data: [FoodPostImageObject] = []
    var userId: Int?
    var indexPath: IndexPath?

    var page: Int = 1
    var alreadyFetchingData = false

    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView.delegate = self
        collectionView.dataSource = self

        let layout = UICollectionViewFlowLayout()
        layout.itemSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)

        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0
        layout.scrollDirection = .horizontal

        collectionView.collectionViewLayout = layout
        if userId != nil {
            getUserImages()
        }
    }
    override func viewDidLayoutSubviews() {
        guard self.indexPath != nil else {return}
        self.collectionView.scrollToItem(at: self.indexPath!, at: .right, animated: false)
    }
}

extension ImagePagerViewController: UICollectionViewDataSource, UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImagePagerCell", for: indexPath) as! ImagePagerCollectionViewCell
        cell.image.loadImageUsingUrlString(urlString: data[indexPath.row].food_photo)
        return cell
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return data.count
    }
}

extension ImagePagerViewController {
    func fetchMoreData(){
        if !alreadyFetchingData {
            if userId != nil {
                getUserImages()
            }
        }
    }
    func getUserImages(){
        guard let userId = self.userId else {return}
        alreadyFetchingData = true
        Server.get("/user_images/\(userId)/\(page)/"){ data, response, error in
            self.alreadyFetchingData = false
            guard let data = data else {return}
            do {
                self.data.append(contentsOf: try JSONDecoder().decode([FoodPostImageObject].self, from: data))
                DispatchQueue.main.async {
                    self.collectionView.reloadData()
                    self.collectionView.scrollToItem(at: self.indexPath!, at: .right, animated: false)
                    self.page += 1
                }
            } catch {}
        }
    }
}

和此UICollectionViewCell:

import UIKit

class ImagePagerCollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var image: CellImageView!

}

在情节提要中,我仅具有collectionView和ImagePagerCollectionViewCell。

希望这会有所帮助

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