Мне нужно было создать закругленные кнопки для фотографий аватаров и найти ответы на этот вопрос, чтобы помочь, но они не помогли мне полностью. Я реализовал метод backgroundRectForBounds
и масштабировал изображение, чтобы оно уместилось, и оно хорошо работает.
У меня есть код на GitHub.
https://github.com/brennanMKE/CircleButton
Метод также указан ниже. Важно установить фоновое изображение, а не изображение для кнопки, которая не работает с этим методом.
- (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];
}
}