我創建了一個帶有一些UIElements(標籤,按鈕,TextField)的IBOutletCollection,我想在特殊事件上移動它。設置IBOutletCollection中所有項目的框架值
這就是我到目前爲止有:
@IBAction func moveDown(sender: UIButton) {
UIView.animateWithDuration(0.4, animations: {
for subview in self.moveOutViews {
var offset = CGFloat(700);
var newY = subview.frame.origin.y + offset;
subview.frame = CGRectMake(subview.frame.origin.x, newY, subview.frame.size.width, subview.frame.size.height);
}
}, completion: {
(value: Bool) in
UIView.commitAnimations();
});
}
我現在的問題是,當動畫完成,我想對新位置的UI元素(文本字段)進行交互,所有的意見「跳'回到原點位置。
莫比這是一個問題,即「發件人」是的IBOutletCollection一部分?
這是一款適用於iOS 8.3應用的iPad,我使用的是Swift。
編輯:我用UIScrollView做了一個解決方法。但我想知道爲什麼第一個想法不起作用。
問題可能是您的約束條件是設置項目的位置,一旦這些約束被重新應用,那麼您的手動更改爲框架被覆蓋。如果您爲第一個項目的Y位置約束設置IBOutlet,然後將所有其他項目的Y位置設置爲與第一個對象對齊,那麼您只需修改約束IBOutlet的常量並調用setNeedsLayout – Paulw11
即可沒有限制。 我已經嘗試了你的想法,但仍然是同樣的問題。 – Stone
爲什麼在完成塊中調用'UIView.commitAnimations()'?這個調用對基於塊的動畫是不必要的 – Paulw11