У меня есть loginViewController, который появляется постоянно, когда пользователь не вошел в систему. Я хотел бы оживить фон этого окна. Я попробовал два метода: UIViewAnimateWithDuration
, добавив подвью и CABasicAnimation
, добавив подслой. Ни анимация не работает. Подслой и подвью выводятся, но они не анимированы.Как мне оживить подслои и подпункты?
Первая анимация - animateWithDuration
. Он пытается переместить рисованный прямоугольник в случайную точку на оси y. Вторая анимация - CABasicAnimation
для непрозрачности, изменяя альфа рисованного прямоугольника от 1 до 0. Мне не важно, будет ли я использовать анимацию вида или анимацию слоя, и будет достаточно, но не нажимаем.
func makeBackground() -> UIView {
let backRect = UIView()
backRect.frame = self.view.bounds
backRect.backgroundColor = backgroundColor
let floater2 = UIView(frame: CGRectMake(25.0, 0.0, 25, 25))
floater2.backgroundColor = backgroundColor
floater2.layer.borderWidth = 1.0
floater2.layer.borderColor = lowColor.CGColor
floater2.alpha = 0.0
backRect.addSubview(floater2)
UIView.animateWithDuration(2.0, delay: 0.0, options: .Repeat, animations: {() -> Void in
let randomY = CGFloat(arc4random_uniform(568))
floater2.frame.origin.y = randomY
}, completion: nil)
let floater1 = CALayer()
floater1.frame = CGRectMake(0.0, 0.0, 25, 25)
floater1.backgroundColor = UIColor.redColor().CGColor
let animation = CABasicAnimation(keyPath: "opacity")
animation.fromValue = 1.0
animation.toValue = 0.0
animation.repeatCount = 100
animation.duration = 2.0
floater1.addAnimation(animation, forKey: "opacity")
backRect.layer.addSublayer(floater1)
return backRect
}
И тогда я присвоить результат функции в переменную при представлении контроллер представления Логин:
var loginViewController = PFLogInViewController()
loginViewController.delegate = self
loginViewController.fields = PFLogInFields.Default
| PFLogInFields.Facebook
| PFLogInFields.Twitter
loginViewController.logInView?.backgroundColor = backgroundColor
var bg = self.makeBackground()
loginViewController.logInView?.addSubview(bg)
loginViewController.logInView?.sendSubviewToBack(bg)
Вы мужчина! Это было именно так. Спасибо. –