【发布时间】:2016-01-12 22:47:43
【问题描述】:
我是 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(string: 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。相反,你应该在正确的地方调用你的动画来达到你的目的,或者你可以使用某些控制标志让它只发生一次。