如何在保持标签文本合理的同时对标签应用翻译和转换

时间:2019-01-15 22:58:27

标签: ios swift

我有一个标签和一个文本输入,当用户加载初始页面时,标签位于文本输入框的顶部。当用户单击标签时,我希望标签在文本框上方向上移动,并减小标签中文本的磅值。然后,用户可以在文本框中键入文本。如果用户未在文本框中键入任何内容并单击页面上的其他位置,则标签将向下移到文本框上方,并将文本大小设置回原始大小(此部分有效)

要执行转换,我试图重置标签顶部自动约束和标签顶部自动约束的常量值。运行动画时,标签会正确地向上移动到文本框上方的正确位置,但是,由于我将其转换为标签原始大小的75%,因此标签会居中,从而使现在较小的标签移至而不是像我想要的那样固定在左侧边缘。

        func textFieldDidBeginEditing(_ textField: UITextField) {
        guard let thisItem = item as? CardInfoTextInputViewModelItem else {
            return
        }
        if let labelText = formLabel.text, let placeHolderText = thisItem.placeHolderValue {
            if labelText == placeHolderText {
                formLabel.text = thisItem.label
                textField.text = "" // blank out the text field
                formLabelTop.constant = 20
                formLabelLeading.constant = 0
                performAnimation(transform: CGAffineTransform(scaleX: 0.75, y: 0.75))
            }
        }
    }

    /*
     * done editing text field
     */
    func textFieldDidEndEditing(_ textField: UITextField) {
        guard let thisItem = item as? CardInfoTextInputViewModelItem else {
            return
        }
        if let text = textField.text, text.isEmpty {
            formLabel.text = thisItem.placeHolderValue
            formLabelTop.constant = 38
            formLabelLeading.constant = 16
            performAnimation(transform: CGAffineTransform(scaleX: 1, y: 1))
        }
    }

    // perform the animation
    fileprivate func performAnimation(transform: CGAffineTransform) {
        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
            self.formLabel.transform = transform
            self.layoutIfNeeded()
        }, completion: nil)
    }

我不确定这是否是正确的方法,或者是否需要以其他方式处理。我想知道一旦标签在文本框上方被翻译后如何保持标签对齐。任何帮助,将不胜感激 谢谢 布莱恩

0 个答案:

没有答案