gpt4 book ai didi

ios - 无论图像大小如何,获取 UIButtons 的标签以排列

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

我有几个要添加到 View Controller 的按钮,每个按钮都有不同的图像和标签。

我希望按钮的标签按其前缘对齐,并且最好让图像按垂直居中对齐,但我只会让标签对齐。

这可以通过 UIButton 本身的设置实现吗?还是只制作带有图像和标签的自定义 View 会更好?

这是我的意思的粗略示例。绿色是按钮,红色是图像。

基本上,我想为图像定义一个最大尺寸,图像居中,并且标签将始终与这个设置尺寸对齐,以便对齐。

我通过 Storyboard实现了这一点,方法是在每个按钮上设置自定义插图以实现对齐,但我重新创建了 View Controller 以解决 Reveal View Controller 带来的一些限制。这是“后 View ”,我们的菜单。我们希望能够更动态地选择哪个 View Controller 作为前 View Controller 开始,这使用 Storyboard似乎不可行。您必须明确设置前 View 。

enter image description here

最佳答案

将按钮中的文本与不同大小的图像对齐......

  1. 设置所有按钮的 contentHorizo​​ntalAlignment = .left
  2. 计算最宽图像的宽度……

让 maxWidth = [button1, button2, button3].map({$0!.imageView!.image!.size.width}).max()!

  1. 要将所有内容向右移动(因此将空间设置为图像左侧),请设置按钮的 contentEdgeInsets.left。要将文本进一步向右移动(设置图像和文本之间的间距),请设置按钮的 titleEdgeInsets.left

像这样……

let minInset: CGFloat = 8 // largest image has inset of 8 to left and right
for button in [button1, button2, button3] {

let imageWidth = button!.imageView!.image!.size.width
let inset = (maxWidth + (minInset * 2) - imageWidth) / 2

button?.contentEdgeInsets.left = inset
button?.titleEdgeInsets.left = inset
}

你最终应该得到……

enter image description here

关于ios - 无论图像大小如何,获取 UIButtons 的标签以排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046855/

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