2015-11-05 48 views
1

我有一個滾動視圖水平如何添加捏縮放到水平scrollView?

@IBOutlet weak var scrollView: UIScrollView! 

override func viewDidLoad() { 

    for image in imageArray { 
     let imageView = UIImageView(image: image) 
     scrollView.addSubview(imageView) 
     imageViews.append(imageView) 
    } 

} 

override func viewDidLayoutSubviews() { 


    for (index,imageView) in imageViews.enumerate() { 
     imageView.frame = CGRectMake(CGFloat(index)*scrollView.frame.size.width, 0, scrollView.frame.size.width, scrollView.frame.size.height) 
    } 

    let imageArrayCount = CGFloat(imageArray.count) 

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * imageArrayCount, scrollView.frame.size.height) 

} 

如何對其進行修改,以便使方法viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView?工作?方法描述說,我需要視圖,這將被放大,但我不明白如何在滾動視圖中嵌入新視圖。

回答

1

功能viewForZoomingInScrollView(_:)應該返回一個UIView將用於縮放(在此視圖的比例將改變)。因此,您必須將所有圖像放入一個視圖並將視圖添加到滾動視圖。

這是你必須做的,使縮放工作內容:

添加屬性爲容器視圖:

class YourViewControllerClass: UIViewController { 
    let imagesContainerView = UIView() 
    ... 
} 

添加您的所有圖像視圖到這個容器視圖,並添加容器視圖滾動視圖:

scrollView.addSubview(imagesContainerView) 
view.addSubview(scrollView) 

for image in imageArray { 
    let imageView = UIImageView(image: image) 
    imagesContainerView.addSubview(imageView) 
    imageViews.append(imageView) 
} 

後您滾動視圖設置contentSize,設置相應的容器視圖的框架:

imagesContainerView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height) 

允許通過滾動視圖設置最大和最小縮放比例縮放和設置委託:

scrollView.maximumZoomScale = 5.0 
scrollView.minimumZoomScale = 1 
scrollView.delegate = self 

實現委託方法:

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
    return imagesContainerView 
} 
+0

那是一個偉大的答案!非常感謝你! –