如何将图像对齐到UIButton的右边缘,因此它将保留在所有设备的右边缘。下图显示了带有图像的UIButton(圆三角形)。图像是来自iPhone 6的屏幕截图,它符合我的要求。但是对于iPhone 6+,图像向左移动一点点,对于iPhone 5,它向右移动,图像显示在外面。的UIButton。我知道原因,这是因为我设置了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)
}
}
答案 0 :(得分:4)
问题是你正在硬编码 left inset:
self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 300, bottom: 0, right: 0)
显然,无论按钮的宽度如何,当你想要做的是配置 right 时,它都不会起作用!如果由于自动布局或其他原因按钮变宽或变窄,您的图像将被悬挂在错误的位置。改为设置右插入。
或者,子类UIButton并覆盖imageRectForContentRect:
。现在,图像的位置将基于按钮大小,无论它是什么(因为自动布局或其他)。