Con la ayuda de Tim C's answer, que fue capaz de crear una extensión en UIButton
utilizando Swift que le permite especificar el marco de la imagen mediante el uso de la función .setImage()
con un frame
parámetro extra
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
)
}
}
}
uso de este, si desea establecer el marco de una UIButton
a CGRectMake(0, 0, 64, 64)
, y establecer la imagen de ella a myImage
con un marco de CGRectMake(8, 8, 48, 48)
, podría utilizar
let button: UIButton = UIButton(frame: CGRectMake(0, 0, 64, 64))
button.setImage(
myImage,
inFrame: CGRectMake(8, 8, 48, 48),
forState: UIControlState.Normal
)
¿Has intentado hacer la imagen más pequeña (LOL)? – CodaFi
@CodaFi tiene razón, generalmente debe proporcionar activos en el tamaño correcto, ya que reduce el trabajo para la CPU, utiliza menos memoria y es probable que se vea mejor ya que no puede introducir ningún artefacto de escalado ... –
También puede hacer el botón para el tamaño de la imagen (o viceversa). ¿Por qué tener un botón grande ... con una imagen pequeña en él? Simplemente agregue la imagen que desea, para eso están los botones personalizados o puede explicar la lógica que quiero implementar para que otros tengan una idea clara. –