Как переместить яркий текст в iOS?
Я хочу сделать приложение, которое говорит "привет" в центре представления, ждет несколько секунд и анимируется наверх (что-то вроде представления входа в систему, которое вы видели бы во многих приложениях)
Независимо от того, что я пытаюсь, я не могу держать текст по центру по оси X. Не могли бы вы заглянуть в мой код и сказать, в чем ошибка?
Спасибо
// Blur Effect
var blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
var blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = view.bounds
view.addSubview(blurEffectView)
// Vibrancy Effect
var vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect)
var vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect)
vibrancyEffectView.frame = view.bounds
// Add label to the vibrancy view
vibrancyEffectView.contentView.addSubview(vibrantLabel)
vibrantLabel.textAlignment = NSTextAlignment.Center
// Add the vibrancy view to the blur view
blurEffectView.contentView.addSubview(vibrancyEffectView)
UIView.animateWithDuration(1, delay: 1, options: .CurveEaseIn, animations: {() -> Void in
self.vibrantLabel.frame = CGRectMake(0, 100, self.vibrantLabel.frame.width, self.vibrantLabel.frame.height)
}, completion: {(finished: Bool) -> Void in
self.view.alpha = 1
})
2 ответа
Чтобы решить вашу проблему, просто сохраняйте x origin вашего ярлыка во время анимации. Пожалуйста, попробуйте эту строку:
self.vibrantLabel.frame = CGRectMake(self.vibrantLabel.frame.origin.x, 100, self.vibrantLabel.frame.width, self.vibrantLabel.frame.height)
Вы устанавливали начало координат на оси x на ноль, поэтому ваша метка анимировалась влево по отношению к родительскому виду.
Нашел решение. Мне нужно было установить начальную позицию в viewDidLayoutSubviews(), а затем анимировать в viewDidAppear()
@IBOutlet var vibrantLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Blur Effect
var blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
var blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = view.bounds
view.addSubview(blurEffectView)
// self.vibrantLabel.layer.anchorPoint = (CGPointMake(-0.25, -2.65))
// Vibrancy Effect
var vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect)
var vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect)
vibrancyEffectView.frame = view.bounds
// Add label to the vibrancy view
view.addSubview(vibrantLabel)
vibrantLabel.textAlignment = NSTextAlignment.Center
// Add the vibrancy view to the blur view
blurEffectView.contentView.addSubview(vibrancyEffectView)
}
override func viewDidLayoutSubviews() {
vibrantLabel.center = CGPointMake(view.frame.midX, view.frame.midY)
}
override func viewDidAppear(animated: Bool) {
UILabel.animateWithDuration(1.25, delay: 1, options: .CurveEaseInOut, animations: {
self.vibrantLabel.center = CGPointMake(self.view.frame.midX, 100)
}) { (Bool) in
print("success")
}
}