将标签从其在 swift 中的位置向左移动

Move a label left from its position in swift

我在文本框中放置了一个标签,我想在点击此文本框后将此标签移到左侧。在下面的屏幕截图中,'hello' 是一个标签,我想在点击文本框后将其向左移动。

我写了下面的代码但是没有调用'textFieldDidBeginEditing'函数

@IBOutlet weak var lblhello: UILabel!
func textFieldDidBeginEditing(numtxt: UITextField!) {    //delegate method
    lblhello.frame = CGRectMake(98, 156, 42, 21)
}

我根据之前的评论假设您要手动指定帧大小,并且没有使用约束。

首先,您需要将 UITextFieldDelegate 添加到 viewController。

这是在您的 VC class:

开头这样做的
class yourViewControllerName: UIViewController, UITextFieldDelegate {

然后你想指定你的 UITextField 的代表,(最有可能在 viewDidLoad

yourTextFieldName.delegate = self

现在您可以使用 textFieldDelegate 函数了。你要找的可能是这个:

func textFieldDidBeginEditing(textField: UITextField) -> Bool {
    lblhello.frame = CGRectMake(160, 200, 60, 40)
    return true
}

如果一切设置正确,当用户开始编辑您的 UITextField.

时,应该会更改 lblhello 的框架

我经常听到有人说这不起作用的一个常见问题。由 viewDidLoad() 中指定的标签引起。大多数时候你想在 viewDidLoad() 之前声明标签,否则像这样的函数无法访问它。

以防你之后想将它移回原来的位置。你做的几乎和你在 textFieldDidBeginEditing 中做的一样,除了你使用 textFieldDidEndEditing 代替。

但是,在旁注中。我确实建议习惯使用约束而不是为这样的事情设置框架。