如何在 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 图像的主要内容,如果未能解决你的问题,请参考以下文章

将 div 与图像的右边缘对齐

是什么使我的WPF弹出窗口与其PlacementTarget的右边缘对齐?

android编程用怎么让控件的“右边”对齐在屏幕的中心?

关于align="absmiddle"的说明

如何滚动到 UIScrollview 中的 UIButton 位置

如何在 UIToolbar 完成按钮中将焦点从一个 UIButton 设置到另一个 UIButton