如何在屏幕上交换文本字段位置 - Swift

时间:2015-05-23 21:59:40

标签: ios swift

我有两个UITextFields,并且想要在单击按钮时交换它们的位置。也许还可以为交换制作动画。

即:

textFieldOne& textFieldOne使用Interface Builder定位AutoLayout。

按钮单击

  • 获取textFieldOne位置参数,
  • 获取textFieldTwo位置参数
  • 将textFieldOne位置参数设置为textFieldTwo,
  • 将textFieldTwo位置参数设置为textFieldOne

2 个答案:

答案 0 :(得分:3)

要简单地交换UITextField的位置,您可以将origin值分配给对方。

// Store textFieldOne's postition
let tempPos : CGPoint = textFieldOne.frame.origin
UIView.beginAnimations(nil, context: nil)
// Set textFieldOne to textFieldTwo's position
textFieldOne.frame.origin = textFieldTwo.frame.origin
// Set textFieldTwo to textFieldOne's original position
textFieldTwo.frame.origin = tempPos
UIView.commitAnimations()

或者,对于更多 Swift 做事方式,您可以使用Tuple交换值而无需任何临时变量。

UIView.beginAnimations(nil, context: nil)
(textFieldOne.frame.origin, textFieldTwo.frame.origin) = (textFieldTwo.frame.origin, textFieldOne.frame.origin)
UIView.commitAnimations()

答案 1 :(得分:1)

在接收按钮的功能中,您需要保存每个按钮的位置并转移另一个按钮:

交换位置:

let positionButton1 = button1.frame.origin
let positionButton2 = button2.frame.origin

button1.frame.origin = positionButton2
button2.frame.origin = positionButton1

交换仓位和规模:

let positionButton1 = button1.frame
let positionButton2 = button2.frame

button1.frame = positionButton2
button2.frame = positionButton1