ios - 如何在保持标签文本左对齐的同时对标签应用翻译和转换
问题描述
我有一个标签和一个文本输入,当用户加载初始页面时,标签位于文本输入框的顶部。当用户单击标签时,我希望标签向上移动到文本框上方,并减小标签中文本的磅值。然后用户可以在文本框中键入文本。如果用户没有在文本框中输入任何内容并单击页面上的其他位置,则标签会向下移回文本框顶部并将文本大小设置回原始大小(这部分有效)
为了执行翻译,我试图重置标签的顶部自动约束和标签的前导自动约束的常量值。运行动画时,标签正确地向上移动到文本框上方的正确位置,但是,由于我将标签转换为标签原始大小的 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)
}
我不确定这是否是正确的方法,或者我是否需要以不同的方式处理。我想知道一旦标签被翻译到文本框上方,如何保持标签左对齐。任何帮助将不胜感激谢谢布赖恩
解决方案
推荐阅读
- python - 在 django 应用程序中,即使迁移文件夹文件被删除,此错误也存在“关系“blog_no_of_views”不存在”
- html - Html 中包含 java 脚本。如何从中提取 HTML 标签
- vue.js - 从 vuex 中的模块 getter 访问根状态
- html - 如何过滤具有多个复选框的数据表
- c# - 如何创建节点以查看 3D 场景?
- variables - 可以将命令保存在变量中吗?
- javascript - 如何通过 post 和 ajax 安全地提交价格?
- python-3.x - pd.rename 键 KeyError: 'New_Name'
- android - 使用 Alarmmanager (Android Studio) 只显示一次通知
- php - 当我尝试使用ajax发送一些变量时,为什么我总是在php响应中得到NULL