我正在创建一个相册应用,其中一个页面应该包含多个imageView,每个都在一个scrollView中,因此放置在页面中的每个图像都可以滚动和缩放(有点像Instagram的布局)。 实现这个的最佳方法是什么?使用CollectionView看起来有点复杂,因为空间可能会有所不同,基于所选的模板,但是当我尝试使用多个scrollViews时,我在代理viewForZooming函数中引用了每个问题。我尝试使用scrollViews数组,但没有调用委托函数。
func drawPage(pageID: Int) {
var tempImagesArray = [UIImage]()
var tempImageLocationsArray: [CGRect] = []
var scrollView: UIScrollView!
var imageView = UIImageView()
if pageID == 1 {
tempImagesArray = imagesArrayLeft
tempImageLocationsArray = imageLocationsArrayLeft
}
else {
tempImagesArray = imagesArrayRight
tempImageLocationsArray = imageLocationsArrayRight
}
for i in 0...tempImagesArray.count - 1 {
scrollView = UIScrollView(frame: tempImageLocationsArray[i])
scrollView.delegate = self
let image = tempImagesArray[i]
imageView.image = image
imageView.frame = tempImageLocationsArray[i]
scrollView.addSubview(imageView)
scrollView.contentSize = image.size
scrollView.clipsToBounds = true
scrollView.layer.borderColor = UIColor.white.cgColor
scrollView.layer.borderWidth = 4.0
let scrollViewFrame = scrollView.frame
let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
let minScale = min(scaleWidth, scaleHeight)
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 4.0
scrollView.zoomScale = minScale
scrollViewsArray.append(scrollView)
imageViewsArray.append(imageView)
scrollViewsArray[scrollViewsArray.count - 1].delegate = self
self.pageFrameView.addSubview(scrollView)
}
}
委托功能:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
if scrollViewsArray.count > 0 {
if scrollView == scrollViewsArray[0] {
return self.imageViewsArray[0]
}
else {
return self.imageViewsArray[0]
}
}
return nil
}
答案 0 :(得分:1)
SORRY !!!但你的问题有点复杂。我现在建议你最好的是每个滚动视图的USE标记,而不是将它们放在数组中。
此致 Code Blizzard