我创建了一个带有一些UIElements(Label,Button,TextField)的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();
});
}
现在我的问题是,当动画完成后,我想与新位置上的UIElements(TextField)进行交互时,所有视图'跳'回到原点位置。
maby是一个问题,'发件人'是 IBOutletCollection 的一部分?
这是适用于iOS 8.3应用的iPad,我使用的是Swift。
编辑:我使用UIScrollView进行了解决方法。但我想知道为什么第一个想法不起作用。
答案 0 :(得分:0)
由于我们不知道您的视图是如何设置的,因此我必须猜测它是以下两种情况之一:
像@ Paulw11在评论中提到的那样。您正在编辑由约束保存的视图框架。当视图再次布局时,所有视图都会回溯到由约束确定的位置。事件虽然您说您没有使用约束,但可能为您的视图启用了translatesAutoresizingMaskIntoConstraints
,或者您的xib / storyboard被设置为使用约束,因此会自动为您生成约束。检查此方法的一种方法是仅记录子视图的constraints
属性。
您的应用中的其他地方的代码正在更改您的观看位置,并且无意中被调用。