如何在UIButton

时间:2015-11-30 14:54:38

标签: swift uibutton uiimage xcode7

如何将图像对齐到UIButton的右边缘,因此它将保留在所有设备的右边缘。下图显示了带有图像的UIButton(圆三角形)。图像是来自iPhone 6的屏幕截图,它符合我的要求。但是对于iPhone 6+,图像向左移动一点点,对于iPhone 5,它向右移动,图像显示在外面。的UIButton。我知道原因,这是因为我设置了UIEdgeInsets'剩下来的价值是300,非常适合iPhone 6.所以我的问题是如何才能让所有iPhone都具备这种外观。谢谢。

enter image description here

我的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 个答案:

答案 0 :(得分:4)

问题是你正在硬编码 left inset:

self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 300, bottom: 0, right: 0)

显然,无论按钮的宽度如何,当你想要做的是配置 right 时,它都不会起作用!如果由于自动布局或其他原因按钮变宽或变窄,您的图像将被悬挂在错误的位置。改为设置插入。

或者,子类UIButton并覆盖imageRectForContentRect:。现在,图像的位置将基于按钮大小,无论它是什么(因为自动布局或其他)。