Я пытаюсь создать анимированное фоновое изображение для одного из моих контроллеров представления, где изображение прокручивается горизонтально слева направо, а затем повторяет, когда оно достигло конца изображения по горизонтали. Этот эффект чрезвычайно распространен в играх с SpriteKit, но нет четкой информации о том, как это сделать в стандартном контроллере представления с UIKit. Дополнительные очки, если вы можете сказать мне, как установить верхние пределы на изображение, чтобы в нижней части панели навигации, а не в верхней части контроллера вид :)Фоновое изображение Viewcontroller с горизонтальной анимацией
0
A
ответ
1
Используйте две копии изображение. Начните с одного изображения, полностью занимающего экран. Остальное - слева от него. Анимируйте вправо, чтобы вторая копия выталкивала первую копию с экрана. Когда анимация достигает конца, так что только одна копия полностью занимает экран, вернитесь к началу и повторите. Скачок не будет виден, потому что изображения идентичны, и скачок выполняется, когда они находятся в одинаковых положениях.
Приятно, что поведение, которое я только что описал, является значением по умолчанию для повторяющейся CABasicAnimation; он автоматически возвращается к началу в конце каждого повторения. Таким образом, я был в состоянии написать доказательство правильности концепции очень быстро (Swift 3, IOS 10):
let im = UIImage(named:"stuff")!
// create double image
let r = UIGraphicsImageRenderer(size:
CGSize(width:im.size.width*2,height:im.size.height))
let im2 = r.image { _ in
im.draw(at: .zero)
im.draw(at: CGPoint(x: im.size.width, y: 0))
}
// create layer to hold double image
let imlay = CALayer()
imlay.frame.size = im2.size
imlay.contents = im2.cgImage
// put it inside a single-image-sized container
let scroll = CALayer()
scroll.frame = CGRect(origin: .zero, size: im.size)
scroll.masksToBounds = true
scroll.addSublayer(imlay)
scroll.bounds.origin = CGPoint(x:im.size.width, y:0)
// put it in the interface
self.view.layer.addSublayer(scroll)
// animate
let anim = CABasicAnimation(keyPath: "bounds.origin")
anim.toValue = NSValue(cgPoint: .zero)
anim.duration = 10
anim.repeatCount = .infinity
scroll.add(anim, forKey: nil)
1
You can achieve it by setting the `frame` of your `imageview` within an animation block like below:
func animate(){
imageView.frame.origin.x = 0
UIView.animateWithDuration(2, delay: 0.0, options: .CurveLinear, animations: {[unowned self]() -> Void in
self.imageView.frame.origin.x = self.view.frame.size.width
}) {[unowned self] (finsihed) -> Void in
self.animate()
}
}
Смежные вопросы
- 1. фоновое изображение с горизонтальной прокруткой
- 2. Изменить фоновое изображение с анимацией
- 3. изменить фоновое изображение div с анимацией
- 4. CSS фоновое изображение меняется с анимацией
- 5. ViewController не загружает фоновое изображение
- 6. Набор UINavigationBar фоновое изображение в ViewController
- 7. Существующий ViewController с пользовательской анимацией
- 8. Push ViewController с модальной анимацией (горизонтальный флип)
- 9. Пользовательский UIActivity ViewController Фоновое изображение Прозрачность не работает
- 10. javascript, изменяющий изображение с анимацией
- 11. Изображение электронной почты с анимацией
- 12. Изображение с анимацией в iphone
- 13. Фоновое изображение с php
- 14. масштабируемое фоновое изображение с совпадающим горизонтальным навигатором
- 15. Установить фоновое изображение с помощью css не загружать фоновое изображение
- 16. Изображение прыгает перед анимацией
- 17. Как отключить фоновое фоновое изображение
- 18. Анимированное фоновое изображение с помощью кнопок
- 19. CSS-фоновое изображение со 100% шириной и анимацией прокрутки до тех пор, пока изображение не закончится
- 20. Влияние поворота на фоновое изображение
- 21. NavigationController Push Distort Фоновое изображение
- 22. Фоновое изображение с эффектом карусели
- 23. Прозрачное фоновое изображение с градиентом
- 24. Обведите фоновое изображение с Jquery
- 25. Случайное фоновое изображение с Javascript
- 26. Фоновое изображение, работающее с SurfaceView
- 27. Фоновое изображение JFrame с контентом
- 28. Настройки Фоновое изображение с python
- 29. Назначают фоновое изображение с JQuery
- 30. фоновое изображение с покрытием наложения.
Я мириться видео на YouTube, чтобы показать результат: https: // youtu. be/wRf3plbSd1g Мое тестовое изображение было всего лишь частью вашего изображения, но это не имеет никакого значения. Как вы можете видеть, эффект состоит в непрерывной прокрутке вправо. – matt
Мэтт, это потрясающе. Большое вам спасибо за это, он отлично работал. – jwhubert91
Я знал, что тебе это понравится. Рад помочь; объединение этого примера было намного интереснее, чем то, что мне было нужно делать! – matt