2016-06-22 2 views
0

Наличие массива изображений (загрузка с сервера), который я хочу показать в scrollview с поддержкой пейджинга и масштабирования, но я не нашел никакого решения. Я много искал, но у меня не было никакого решения.UIscrollView Пейджинг и масштабирование изображений в swift

Любая помощь действительно ценится. Спасибо!

В MainController

var mainScrollView: UIScrollView! 


override func viewDidLoad() { 
    super.viewDidLoad() 
    var x:CGFloat = 0 
    mainScrollView = UIScrollView(frame: view.bounds) 
    mainScrollView.pagingEnabled = true 
    let images=["image.png","photo.jpg","3.png"] 
    for var i = 0; i < images.count; i++ 
    { 

     let imageView = UIImageView(image: UIImage(named: images[i])) 

     let scrollView = SlideShow(image: imageView, scrollFrame: CGRectMake(x, view.bounds.origin.y, view.bounds.width, view.bounds.height)) 

     x = x + UIScreen.mainScreen().bounds.size.width 
     mainScrollView.addSubview(scrollView) 
    } 
    mainScrollView.contentSize=CGSizeMake(x, self.mainScrollView.frame.size.height); 
    mainScrollView.contentOffset=CGPointMake(0, 0); 
    view.addSubview(mainScrollView) 
    // Do any additional setup after loading the view. 


} 

В SubClass

public class SlideShow: UIScrollView, UIScrollViewDelegate { 

public var imageView = UIImageView() 


// MARK: - Life cycle 

init(image: UIImageView, scrollFrame: CGRect) { 

    super.init(frame: scrollFrame) 

    //image.setToImageView(imageView) 
    imageView = image 
    imageView.clipsToBounds = true 
    imageView.userInteractionEnabled = true 

    // UIScrollView(frame: bounds) 
    delegate = self 
    showsVerticalScrollIndicator = false 
    showsHorizontalScrollIndicator = false 
    backgroundColor = UIColor.blackColor() 
    // contentSize = imageView.bounds.size 
    // autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
    contentOffset = CGPoint(x: 1000, y: 450) 

    addSubview(imageView) 

    // setZoomScale() 

    setupGestureRecognizer() 

} 


func setupGestureRecognizer() { 
    let doubleTap = UITapGestureRecognizer(target: self, action: "handleDoubleTap:") 
    doubleTap.numberOfTapsRequired = 2 
    addGestureRecognizer(doubleTap) 
} 

func handleDoubleTap(recognizer: UITapGestureRecognizer) { 

    if (zoomScale > minimumZoomScale) { 
     setZoomScale(minimumZoomScale, animated: true) 
    } else { 
     setZoomScale(maximumZoomScale, animated: true) 
    } 
} 


required public init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 
override public func layoutSubviews() { 
    setZoomScale() 
    //setZoomScale(minimumZoomScale, animated: false) 
} 


public func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 

    return imageView 

} 


func setZoomScale() { 
    let imageViewSize = imageView.bounds.size 
    let scrollViewSize = bounds.size 
    let widthScale = scrollViewSize.width/imageViewSize.width 
    let heightScale = scrollViewSize.height/imageViewSize.height 

    minimumZoomScale = min(widthScale, heightScale) 
    zoomScale = 1.0 
} 

public func scrollViewDidZoom(scrollView: UIScrollView) { 
    let imageViewSize = imageView.frame.size 
    let scrollViewSize = bounds.size 

    let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height)/2 : 0 
    let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width)/2 : 0 

    scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding) 
} 

}

+0

пожалуйста, предоставьте ваш код ... – DJ1

+0

ли это не поможет вам? https://www.raywenderlich.com/122139/uiscrollview-tutorial – Santosh

+0

НЕТ. Я обновляю вопрос, пожалуйста, посмотрите. – Prabhat

ответ

0

Решение 1: -Agrume Library with load photo url.
Есть несколько способов, которые можно использовать для просмотра изображений (и включенные Пример проекта показывает их все).

Это одна из лучших библиотек для этого.

enter image description here

Решение 2: - This library provide multiple images and zoom also.

+0

Я пытаюсь это сделать, после увеличения их много лишнего места в scrollview. – Prabhat

+0

Просмотрите мой ответ. –

+0

содержит как пейджинг, так и масштабирование. – Prabhat

Смежные вопросы