С помощью Tim C's answer, я был в состоянии создать расширение на UIButton
с помощью Swift, который позволяет указать кадр изображения с помощью функции .setImage()
с дополнительным frame
параметром
extension UIButton{
func setImage(image: UIImage?, inFrame frame: CGRect?, forState state: UIControlState){
self.setImage(image, forState: state)
if let frame = frame{
self.imageEdgeInsets = UIEdgeInsets(
top: frame.minY - self.frame.minY,
left: frame.minX - self.frame.minX,
bottom: self.frame.maxY - frame.maxY,
right: self.frame.maxX - frame.maxX
)
}
}
}
Используя это, если вы хотите установить кадр UIButton
к CGRectMake(0, 0, 64, 64)
и установите изображение его на myImage
с рамой CGRectMake(8, 8, 48, 48)
, вы могли бы использовать
let button: UIButton = UIButton(frame: CGRectMake(0, 0, 64, 64))
button.setImage(
myImage,
inFrame: CGRectMake(8, 8, 48, 48),
forState: UIControlState.Normal
)
Вы пытались сделать изображение меньшим (LOL)? – CodaFi
@CodaFi прав, вы должны, как правило, предоставлять активы в правильном размере, так как это уменьшает любую работу для процессора, использует меньше памяти и, скорее всего, будет выглядеть лучше, поскольку вы не потенциально представляете какие-либо артефакты масштабирования ... –
Также вы можете сделать кнопку на размер изображения (или наоборот). У вас есть большая кнопка ... с небольшим изображением в ней. Просто добавьте изображение, которое вы хотите, вот какие пользовательские кнопки или вы можете объяснить логику, которую вы хотят реализовать для других четкую идею. –