【发布时间】:2020-01-16 11:06:04
【问题描述】:
我有一个 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
}()
或者当它太长时:
【问题讨论】:
-
你什么时候使用上面的代码?看起来像框架问题,请在控制器可见后尝试使用它。如果问题仍然存在,请删除 btn.translatesAutoresizingMaskIntoConstraints (developer.apple.com/documentation/uikit/uiview/…)
标签: ios swift uibutton uilabel