如何在 UIButton 的右边缘对齐 UIButton 图像
Posted
技术标签:
【中文标题】如何在 UIButton 的右边缘对齐 UIButton 图像【英文标题】:How to align an UIButton image on the right edge of the UIButton 【发布时间】:2015-11-30 14:54:37 【问题描述】:如何将图像对齐到 UIButton 的右边缘,以便它在所有设备上都保持在右边缘。下图显示了带有图像(圆形三角形)的 UIButton。该图像是 iPhone 6 的屏幕截图,符合我的要求。但是对于 iPhone 6+,图像向左移动一点,对于 iPhone 5,它向右移动,图像显示在外部用户界面按钮。我知道原因,这是因为我将 UIEdgeInsets 的左值设置为 300,非常适合 iPhone 6。所以我的问题是如何为所有 iPhone 归档这种外观。谢谢。
我的 UIButton 代码:
class DropDownButton : UIButton
required init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)!
style()
private func style()
self.titleEdgeInsets.left = 0
self.layer.cornerRadius = 2;
self.setImage(UIImage(named: "Arrow_Close"), forState: UIControlState.Normal)
self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 300, bottom: 0, right: 0)
self.backgroundColor = UIColor(CGColor: "#FFFFFF".CGColor)
self.tintColor = UIColor(CGColor: "#616366".CGColor)
self.titleLabel!.font = UIFont(name: "OpenSans", size: 15)
【问题讨论】:
【参考方案1】:问题是您正在硬编码 left 插图:
self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 300, bottom: 0, right: 0)
显然,当您想要做的是相对于 right 进行配置时,无论按钮的宽度如何,这都行不通!如果按钮由于自动布局或其他原因而变宽或变窄,您的图像将挂在错误的位置。改为设置 right 插图。
或者,继承 UIButton 并覆盖 imageRectForContentRect:
。现在图像的位置将基于按钮大小,无论它是什么(因为自动布局或其他)。
【讨论】:
感谢您的回答@matt,但我如何使用 imageRectForContentRect。我对 swift 很陌生。 我不会为你写代码。尝试一下!实验!学习!以上是关于如何在 UIButton 的右边缘对齐 UIButton 图像的主要内容,如果未能解决你的问题,请参考以下文章
是什么使我的WPF弹出窗口与其PlacementTarget的右边缘对齐?