我有几个按钮要添加到视图控制器中,每个按钮都有不同的图像和标签。
我希望按钮的标签按其前边缘对齐,并且最好使图像按垂直中心对齐,尽管我只想对标签进行对齐。
使用UIButton本身的设置是否可行?还是只用图像和标签创建自定义视图会更好?
这是我意思的粗略例子。绿色是按钮,红色是图像。
基本上,我想为图像定义一个最大尺寸,使图像居中,并且标签将始终与该设置尺寸对齐,以便对齐。
我已经通过情节提要实现了这一点,方法是在每个按钮上设置自定义插图以获取对齐方式,但是由于Reveal View Controller,我正在重新创建View Controller以克服一些限制。这是我们的菜单“后视图”。我们希望能够更动态地选择使用哪个视图控制器作为前视图控制器,而使用情节提要板似乎并不可行。您必须明确设置将其作为前视图。
答案 0 :(得分:1)
要使按钮中的文本与不同大小的图像对齐……
contentHorizontalAlignment = .left
let maxWidth = [button1, button2, button3].map({$0!.imageView!.image!.size.width}).max()!
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
}
您应该以...
结尾