gpt4 book ai didi

ios - 如何在分页 UIScrollView 中显示确定的项目而不是仅从 0 加载它

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:12 32 4
gpt4 key购买 nike

我想重新创建与 iOS 内置图库应用在基本级别相同的概念,这意味着拥有一组图像并能够单独查看它们并向右或向左滑动以查看其中的其他图像阵列。出于测试目的,我设置了一个小的 UIImage 数组,然后为数组中的每个图像添加一个单独的 subview 到启用分页的 scrollView。一切都按预期工作,但是每次我加载应用程序时,用户都会从第一项(数组中的第 0 项)开始,我找不到手动选择需要显示的第一张图像的方法,例如如果我希望 scrollView 首先显示数组中的第三张图片,然后能够向左或向右滑动以翻页到数组中的其他图片怎么办?我找不到解决方案。

我已经尝试添加其他 subview ,但这不起作用,应用程序按预期工作但总是从数组中的第一项开始,我想手动选择该项目,所以如果我想显示第三张图片在数组中,collectionView 就是这样做的。我有六张图片用于测试目的(每张都称为 menu_icon_(0...5))

@IBOutlet weak var scrollView: UIScrollView! {
didSet {
scrollView.delegate = self
}
}

var images:[ImagePreviewView] = [ImagePreviewView]()
override func viewDidLoad() {
super.viewDidLoad()
images = generateImages()
setupSlideScrollView(imagesPreviews: images)
}

func generateImages() -> [ImagePreviewView]{
var array:[ImagePreviewView] = []

for i in 0...5 {
let imagePreview = Bundle.main.loadNibNamed("ImagePreview", owner: self, options: nil)?.first as! ImagePreviewView
imagePreview.userSelectedImageView.image = UIImage(named: "menu_icon_\(i)")
array.append(imagePreview)
}
return array
}

func setupSlideScrollView(imagesPreviews : [ImagePreviewView]) {
scrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
scrollView.contentSize = CGSize(width: view.frame.width * CGFloat(imagesPreviews.count), height: view.frame.height)
scrollView.isPagingEnabled = true

for i in 0 ..< imagesPreviews.count {
imagesPreviews[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)
scrollView.addSubview(imagesPreviews[i])
}
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
print("Page Index is \(pageIndex)")
}

我想以用户将图像添加到 Collection View 的方式实现此代码,并且当用户点击图像时,indexPath.item 被发送到此 viewController 并显示用户选择的图像,而不是数组中的第一张图像,然后可以向右或向左滑动。我试图通过后一个 View Controller 逻辑重新创建它的样子。

最佳答案

因此您将在创建此 VC 时收到索引。让我们称之为selectedIndex

var selectedIndex = 0 //I give 0 as initial value but it will be updated anyways.

然后在 viewDidAppear 中尝试以下操作:

let width = view.frame.width
scrollView.setContentOffset(CGPoint(x: width * selectedIndex, y: 0), animated: false)

因此,当用户点击图像时,您将在 VC 中收到该图像的索引号,然后将 scrollView 的 setContentOffset 设置为屏幕宽度乘以 selectedIndex,这应该会为您提供结果想要。

关于ios - 如何在分页 UIScrollView 中显示确定的项目而不是仅从 0 加载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54278877/

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