首页 > 解决方案 > 如何在保持标签文本左对齐的同时对标签应用翻译和转换

问题描述

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

为了执行翻译,我试图重置标签的顶部自动约束和标签的前导自动约束的常量值。运行动画时,标签正确地向上移动到文本框上方的正确位置,但是,由于我将标签转换为标签原始大小的 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)
    }

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

标签: iosswift

解决方案


推荐阅读