Necesitaba crear botones redondeados para las fotos de avatar y encontré las respuestas a esta pregunta para ayudar, pero no me dieron todo el camino hasta allí. Implementé el método backgroundRectForBounds
y escalado la imagen para que se ajuste y funciona bien.
Tengo el código en GitHub.
https://github.com/brennanMKE/CircleButton
El método también se enumeran a continuación. Es importante establecer la imagen de fondo y no la imagen para el botón que no funciona con este método.
- (CGRect)backgroundRectForBounds:(CGRect)bounds {
UIImage *backgroundImage = [self backgroundImageForState:self.state];
if (backgroundImage) {
CGFloat maxWidth = CGRectGetWidth(self.frame);
CGFloat xDelta = maxWidth/backgroundImage.size.width;
CGFloat yDelta = maxWidth/backgroundImage.size.height;
CGFloat delta = xDelta > yDelta ? xDelta : yDelta;
CGFloat x = floorf((self.bounds.size.width - (backgroundImage.size.width * delta))/2);
CGFloat y = floorf((self.bounds.size.height - (backgroundImage.size.height * delta))/2);
return CGRectMake(x, y, backgroundImage.size.width * delta, backgroundImage.size.height * delta);
}
else {
return [super backgroundRectForBounds:bounds];
}
}
Lo sentimos, arrastrar a que desde el fondo del tiempo, pero hay una pérdida de memoria en allí, si no me equivoco. Sin lanzamiento para el alloc. –
@Joseph, gracias por señalar eso. Actualicé el código. –