swift - 尝试添加其他文本字段时,为什么我的标签不会更改位置?

标签 swift uiview animatewithduration

所以我的 Storyboard上有一个按钮。当按下该按钮时,我想将某个标签向下移动一点,并向屏幕添加一个新的文本字段。这是简化的代码:

UIView.animateWithDuration(0.5, animations: { () -> Void in

            self.addIngredientLabel.center.y += self.addIngredientLabel.bounds.height

            }) { (_) -> Void in

                let newIngredientTextField = UITextField(frame: CGRectMake(100, 110, 100, 100))

                newIngredientTextField.center.y -= 50
                newIngredientTextField.placeholder = "place text here"
                newIngredientTextField.contentHorizontalAlignment = .Left

                self.view.addSubview(newIngredientTextField)


        }

问题是,动画完成后,标签会跳回到原来的位置。就像动画提前终止一样。添加文本字段并且标签移动,但它不会保持移动状态。

我尝试在函数末尾添加文本字段,而不是在完成 block 中。任何形式的重新排序似乎都没有帮助。

我觉得我不理解动画的一些基本知识。如果有人有任何建议,我将不胜感激。

最佳答案

由于您正在使用 Storyboard ,因此您很可能也会使用自动布局。控件的位置在视觉设计( Storyboard)中确定,并将自动调整以适应方向变化并适应各种设备屏幕尺寸。这很好,但翻转大小是您无法使用控件的 x,y 坐标直接更改控件的位置。

相反,您可以更改在 Storyboard中定义的约束中的值。例如,如果您的按钮有一个“顶部”距离约束,其上方有一个控件(或 View 的边缘),则可以更改约束的“constant”属性来间接更改控件的位置。

为了操纵代码中的约束,您可以为它们创建 IBOutlet,就像处理任何控件一样。

关于swift - 尝试添加其他文本字段时,为什么我的标签不会更改位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865310/

相关文章:

计时器到期时快速删除表格 View 单元格

ios - 寻找可扩展的 TableView 来转换我的 JSON 树结构

iOS:实现多个部分设置的最佳方式

swift - animateWithDuration 动画一次但不是两次

swift - 使用 tvOS 实现基本动画

ios - Swift Circle ImageView

ios - 获取 CoreData 时因内存问题而终止

ios - 如何使用 UIGestureRecognizerDelegate?

ios - swift 4 : Presenting ViewControllers with a UIView as the frame

swift - 通过 layoutIfNeeded 的图像动画停止工作