0
當用戶從段輸入中選擇一個選項時,我必須隱藏一個字段。 隱藏的字段是第一個,所以我必須爲其他字段設置動畫以覆蓋隱藏字段創建的空間。swift中的動畫在執行某些操作後得到恢復
我正在使用下面的代碼,動畫在隱藏手機輸入後按預期工作。但是當我從同一視圖(電子郵件或任何按鈕或其他任何東西)中選擇任何其他字段時,emailInput再次顯示在與之前相同的位置。動畫(輸入位置)的效果丟失。
@IBAction func hasPhoneChanged(sender: UISegmentedControl) {//is called when user selects that "he have phone or not"
if sender.selectedSegmentIndex == 0 {//Yes
self.phoneInput.hidden = false
...
}else{ //No
self.phoneInput.hidden = true
//move the next input up, to cover space
UIView.animateWithDuration(1, animations: {() -> Void in
self.emailInput.frame.origin.y = self.emailInput.frame.origin.y - 38;
})
}
}
我做錯了什麼?任何線索請。
你說得對,我正在使用自動佈局。這就是問題所在。現在它保持動畫位置。但現在它不動畫,它只是直接出現在我想要它出現的位置。這就是我現在使用的「UIView.animateWithDuration(1,動畫:{() - >虛空 self.emailTopVSpaceConstraint.constant = self.emailTopVSpaceConstraint.constant - 38 })「 – Patriks
在您的動畫塊中調用layoutIfNeeded以使目標位置的計算髮生。編輯我的答案。 – Stefan
正確答案!對於知識,什麼是更有效的方法1)動畫的屬性(高度/寬度)和'完成:'設置約束或2)通過約束動畫,如上所示。 – Patriks