gpt4 book ai didi

swift - UIScrollView 即使只有一页也可以水平滚动

转载 作者:行者123 更新时间:2023-11-28 13:51:54 25 4
gpt4 key购买 nike

我的 Xcode 项目中的 UIScrollView 有问题。我用它来显示几张图片,但即使它只有一页,它仍然会水平滚动。可能与 setupPhotosInScrollView()scrollViewDidScroll 有关。我不知道如何解决这个问题。看起来没问题,但仍然出现此错误。请帮忙!

这是我的代码:

override func viewDidLoad() {
super.viewDidLoad()

// Ad Title
eTitleLabel.text = "\(eObj[EVENTS_TITLE]!)"

// Get photos
let imageFile = eObj[EVENTS_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.eObj[EVENTS_IMAGE2] != nil {
self.pageControl.numberOfPages = 2
let imageFile = self.eObj[EVENTS_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")
}}})
}
// ------------------------------------------------
// 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
}

最佳答案

替换

containerScrollView.contentSize = CGSize(width: W * CGFloat(counter+2), height: H)

containerScrollView.contentSize = CGSize(width: W * CGFloat(photosArray.count), height: H)

当您为 contentSize 设置的宽度不等于添加的照片数量时

关于swift - UIScrollView 即使只有一页也可以水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492057/

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