Слайд-шоу изображений Swift iosIOS

Программируем под IOS
Ответить
Anonymous
 Слайд-шоу изображений Swift ios

Сообщение Anonymous »

Я новичок в разработке для iOS. Я пытаюсь сделать простое полноэкранное слайд-шоу изображений. При пролистывании влево слайд-шоу должно показывать следующее изображение, а при пролистывании вправо слайд-шоу должно показывать предыдущее изображение.

У меня это работает, однако, если я быстро проведу пальцем по экрану, я получаю пустой экран, как будто анимация не поспевает, а затем, когда я подожду немного и снова проведу пальцем по экрану, просмотр изображений ускорится и снова будет работать нормально. Есть идеи, что я делаю неправильно? Как лучше всего реализовать подобную карусель изображений с динамическим количеством изображений (здесь они жестко запрограммированы)?

Код: Выделить всё

import UIKit

var imageArr = ["imageOne.jpg", "imageTwo.jpg", "imageThree.jpg", "imageFour.jpg", "imageFive.jpg"]
var imageIndex = 0;

class ViewController: UIViewController {

var currImage = UIImageView()
var rightImage = UIImageView()
var leftImage = UIImageView()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

var bounds:CGRect = UIScreen.mainScreen().bounds
var width:CGFloat = bounds.size.width
var height:CGFloat = bounds.size.height

currImage.frame = CGRect(x: 0.0, y: 0.0, width: width, height: height)
currImage.image = UIImage(named: imageArr[imageIndex])

rightImage.frame = CGRect(x: width, y: 0.0, width: width, height: height)
rightImage.image = UIImage(named: imageArr[imageIndex + 1])

leftImage.frame = CGRect(x: -width, y: 0.0, width: width, height: height)
leftImage.image = UIImage(named: imageArr[imageArr.count - 1])

self.view.addSubview(currImage)
self.view.addSubview(rightImage)
self.view.addSubview(leftImage)

var swipeLeft = UISwipeGestureRecognizer(target: self, action: "handleSwipe:")
swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
self.view.addGestureRecognizer(swipeLeft)

var swipeRight = UISwipeGestureRecognizer(target: self, action: "handleSwipe:")
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.view.addGestureRecognizer(swipeRight)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.

}

let transitionManager = TransitionManager()

func handleSwipe(gesture: UIGestureRecognizer) {

var bounds:CGRect = UIScreen.mainScreen().bounds
var width:CGFloat = bounds.size.width
var height:CGFloat = bounds.size.height

if let swipeGesture = gesture as? UISwipeGestureRecognizer {

if (swipeGesture.direction == UISwipeGestureRecognizerDirection.Left ) {

UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.2, options: UIViewAnimationOptions.CurveEaseIn, animations: {

self.currImage.frame = CGRect(x: -width, y: 0.0, width: width, height: height)
self.rightImage.frame = CGRect(x: 0.0, y:0.0, width: width, height: height)

}, completion: { finished in

if (!finished) { return }

imageIndex++
imageIndex = imageIndex  imageArr.count - 1 ? 0 : imageIndex + 1
self.rightImage.image = UIImage(named: imageArr[rightIndex])

})
}

if (swipeGesture.direction == UISwipeGestureRecognizerDirection.Right) {

UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.2, options: UIViewAnimationOptions.CurveEaseIn, animations: {

self.currImage.frame = CGRect(x: width, y: 0.0, width: width, height: height)
self.leftImage.frame = CGRect(x: 0.0, y: 0.0, width: width, height: height)

}, completion: { finished in

imageIndex--
imageIndex = imageIndex < 0 ? imageArr.count - 1 : imageIndex

var rightIndex = imageIndex + 1 >  imageArr.count - 1 ? 0 : imageIndex + 1

self.rightImage.image = UIImage(named: imageArr[rightIndex])
self.rightImage.frame = CGRect(x: width, y: 0.0, width: width, height: height)

var tempImg = self.currImage

self.currImage = self.tempImg
self.leftImage = tempCurr

self.leftImage.frame = CGRect(x: -width, y: 0.0, width: width, height: height)
var leftIndex = imageIndex - 1 < 0 ? imageArr.count - 1 : imageIndex - 1
self.leftImage.image = UIImage(named: imageArr[leftIndex])

})
}

}
}

}
Любая помощь приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/286 ... -swift-ios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»