gpt4 book ai didi

ios - 在不更改位置的情况下更改自定义 UIButton 中的 UILabel 标题

转载 作者:行者123 更新时间:2023-11-28 05:38:08 25 4
gpt4 key购买 nike

我有一个 UIButton,左侧是标签,右侧是 UIImageView。该按钮用于打开 UIPicker。当在选取器中选取一个值时,相同的值将显示在按钮标题中。当标题改变时(或者,更准确地说,当 uilabel 的宽度使 UI 搞砸时)标题和图标被移动并且 UI 看起来不太好。

当使用文本太长的标题时,单词会被剪掉,而当标题太短时,对齐就会困惑。

我已经尝试更改标签框架,使其可以保持不变,无论文本如何,并左对齐文本以停止跳跃。我添加了 adjustsFontSizeToFitWidth = true 哪种方法有效,但标题较长时文本会变得太小。我也尝试过在标题更改时重新创建/重新呈现按钮,但所有尝试都失败了。

lazy var sortButton = { () -> UIButton in
let btn = UIButton()
btn.addTarget(self, action: #selector(sortButtonPressed), for: .touchUpInside)
btn.setTitle(NSLocalizedString("Sortera", comment: ""), for: .normal)
btn.titleLabel?.text = btn.titleLabel?.text?.uppercased()
btn.setImage(UIImage(named: "ios-down"), for: .normal)

btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitleColor(Colors.FILTER_BUTTON_TEXT_COLOR, for: .normal)
btn.titleLabel?.adjustsFontSizeToFitWidth = true
btn.titleLabel?.font = UIFont(name: Fonts.AkzidenzGroteskProMd, size: 16)
btn.backgroundColor = Colors.BUTTON_BACKGROUND_GRAY
btn.imageView?.contentMode = .scaleAspectFit
btn.imageEdgeInsets = UIEdgeInsets(top: 16, left: (btn.titleLabel?.frame.size.width)! - buttonInsideOffset/2, bottom: 16, right: -(btn.titleLabel?.frame.size.width)! + buttonInsideOffset/2)
btn.titleEdgeInsets = UIEdgeInsets(top: 0, left: -(btn.titleLabel?.frame.size.width)! + buttonInsideOffset, bottom: 0, right: (btn.titleLabel?.frame.size.width)! - buttonInsideOffset)
return btn
}()

我希望所有按钮都像这样,无论标题文本是什么: enter image description here

然而,当文本太小时它看起来像这样: enter image description here

或者当它太长时:

enter image description here

最佳答案

你可以通过多种方式做到这一点,但最简单的方式:

在此 View 中设置一个 UIView 和其他两个元素(一个标签和一个 imageView),使其看起来像按钮,然后根据需要设置约束。然后将 addTarget 添加到标签并对该目标选择器方法执行所有功能。

关于ios - 在不更改位置的情况下更改自定义 UIButton 中的 UILabel 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57942815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com