Я начинаю быстро. Я создаю одно приложение калькулятора подсказки для просмотра, и я хочу, чтобы какая-то анимация произошла, когда приложение загружается в первый раз. И не каждый раз, когда я что-то редактирую.Swift: Как сделать анимацию случаться только один раз, а не каждый раз, когда я что-то редактирую
Вот мой код: Я прячусь контейнер вне поля зрения, когда приложение загружает
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
billView.center.y -= (billView.frame.height)/2
}
И воодушевляющий его двигаться вниз
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
UIView.animateWithDuration(0.8, delay: 0.0,
options: [.CurveEaseOut], animations: {
self.billView.center.y = 210 }, completion: nil)
print(billView.center.y)
}
Это прекрасно работает, когда приложение нагрузки. К сожалению, эта анимация продолжает повторяться снова и снова в любое время, когда я взаимодействую с приложением.
Как эта анимация происходит, когда эта функция вызывается (которая, когда любая информация вводится в текстовое поле или ползунок перемещается)
пусть billAmount = NSString (строка: billField.text). DoubleValue
var tipPercentages = [0.15, 0.18, 0.22]
let tipPercentage = tipPercentages[segTipControl.selectedSegmentIndex]
let percentLabel = round(tipPercentage * 100)
selectedbillPercentageLabel.text = "+\(percentLabel)%"
let tipAmount = billAmount * tipPercentage
let totalAmount = billAmount + tipAmount
let roundedTotalAmount = round(totalAmount * 100)/100
totalLabel.text = "$\(roundedTotalAmount)"
let splitSelected = Double(splitValueSlider.value)
let intsplitSelected = Int(splitSelected)
splitLabel.text = "\(intsplitSelected)"
let splitDollarAmount = roundedTotalAmount/splitSelected
let roundedSplitDollarAmount = round(splitDollarAmount * 100)/100
splitAmount.text = "$\(roundedSplitDollarAmount)"
Есть ли способ избежать вызова метода viewDidLayoutSubviews(), когда какие-либо данные введены в приложение.
Вы не хотите избегать вызова 'viewDidLayoutSubviews', когда данные вводятся в ваше приложение. Вместо этого вы должны вызвать свою анимацию в нужном месте, чтобы служить своей цели, или вы можете использовать определенный флаг управления, чтобы это произошло только один раз. –