当我按下按钮时,我有一个UITextField
动画到视图控制器上(从右侧移动到视图上)。但是,当我按下UITextField
或任何其他视图时,UITextField
消失。如何阻止UITextField
消失。我使用以下代码:
@IBAction func joinCircleButton(sender: AnyObject) {
let button = sender as UIButton
joinTextField.frame.origin.x=500
joinTextField.frame.origin.y=100
if (button.frame.origin.x - 75>0){
UIView.animateWithDuration(0.5, animations:{
button.frame = CGRectMake(button.frame.origin.x - 125, button.frame.origin.y,button.frame.size.width, button.frame.size.height)
button.transform = CGAffineTransformMakeScale(0.5, 0.5);
self.joinTextField.frame=CGRectMake(self.joinTextField.frame.origin.x - 325, self.joinTextField.frame.origin.y,self.joinTextField.frame.size.width, self.joinTextField.frame.size.height)
})
}
}
override func viewDidLayoutSubviews(){
joinTextField.center = CGPointMake(joinTextField.frame.origin.x-500, joinTextField.frame.origin.y)
}
答案 0 :(得分:0)
如果您正在使用iPhone模拟器,请尝试使用50而不是500,因为屏幕宽度很小,因此您的文字字段显示在屏幕外
joinTextField.frame.origin.x=**50**
joinTextField.frame.origin.y=100
override func viewDidLayoutSubviews(){
joinTextField.center = CGPointMake(joinTextField.frame.origin.x-**50**, joinTextField.frame.origin.y)
}
答案 1 :(得分:0)
自动布局不允许您更改视图的框架。相反,您希望更改约束并调用setNeedsUpdateConstraints()
。
如果您需要执行临时更改视图位置的动画,则可以使用CGAffineTransform
,特别是CGAffineTransformMakeTranslate()
,使tx
和ty
代表“你希望移动视图的点“。
由于您还在代码中使用transform to animate scale,因此可以使用CGAffineTransformConcat
“缩放”缩放并将命令转换为可以设置为视图的命令。
你的动画方法应该是这样的:
UIView.animateWithDuration(0.5) {
let trans = CGAffineTransformMakeTranslation(-125, 0)
let scale = CGAffineTransformMakeScale(0.5, 0.5)
button.transform = CGAffineTransformConcat(trans, scale)
self.joinTextField.transform = CGAffineTransformMakeTranslation(-325, 0)
}
Learn more about CGAffineTransform in Apple Docs
关于代码的其余部分 - 您仍然可以在if
中检查框架,但是您必须将更改框架的部分更改为使用transform translate