Я довольно новичок в стремительном/объективном C, и мне интересно, может ли кто-нибудь помочь мне с проблемой, с которой я связан с анимацией изображения (прокручиваем справа налево). В настоящее время у меня есть UIImageView на моем VC, и он не вызывает никаких проблем. Тем не менее, я думаю, что может быть лучше, если бы я использовал UICollectionView. Может ли кто-нибудь, пожалуйста, указать мне в правильном направлении, пожалуйста? Мне еще предстоит разобраться с представлением коллекции в глубину, поэтому концепция относительно нова для меня. Мой код для текущей ситуации:UICollectionView imageview animation
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var sponsorAnimation: UIImageView!
let images = [
UIImage(named: "runforcure")!,
UIImage(named: "marquee")!]
var index = 0
let animationDuration: NSTimeInterval = 1
let switchingInterval: NSTimeInterval = 3
override func viewDidLoad() {
super.viewDidLoad()
sponsorAnimation.image = images[index]
animateImageView()
}
func animateImageView() {
CATransaction.begin()
CATransaction.setAnimationDuration(animationDuration)
CATransaction.setCompletionBlock {
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(self.switchingInterval * NSTimeInterval(NSEC_PER_SEC)))
dispatch_after(delay, dispatch_get_main_queue()) {
self.animateImageView()
}
}
let transition = CATransition()
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
/*
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
*/
sponsorAnimation.layer.addAnimation(transition, forKey: kCATransition)
sponsorAnimation.image = images[index]
CATransaction.commit()
index = index < images.count - 1 ? index + 1 : 0
}
Моя идеальная ситуация была бы одно изображение, показывая в то время, и он будет прокручиваться справа налево через каждые 3 секунды.
ОБНОВЛЕНИЕ: Я думаю, что я действительно близок, однако в последних двух строках кодов я не знаю, где разместить self.collectionview? , Любая помощь ВОЗМОЖНО высоко ценится. Еще раз спасибо!
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var collectionView: UICollectionView!
let images = [UIImage(named: "oneteam"), UIImage(named: "runforcure")]
var timer = NSTimer()
override func viewDidLoad() {
super.viewDidLoad()
timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: Selector("switchImage"), userInfo: nil, repeats: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.images.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell
cell.imageView?.image = self.images[indexPath.row]
/*I don't know where to place this line of code? If I place is outside of this function then it says unresolved identifier 'indexPath'*/
self.collectionView?.scrollToItemAtIndexPath(indexPath, atScrollPosition: UICollectionViewScrollPosition.Top, animated: true)
return cell
}
}
Заранее спасибо!
В настоящее время в моей функции switchImage(), indexPath не регистрируется в системе ... Я определенно чего-то не хватает! – Matty