Создание кнопки и использование свойств тени атрибута layer
не будет работать, потому что когда изображение вращается, вы не хотите, чтобы тень также вращалась.Я воссоздал этот эффект, выполнив следующее.Я создал два изображения размером 35px.Однажды называется delete-icon-bg.png
, а одна называется delete-icon-dash.png
.delete-icon-bg.png
- это просто стиль красного круга, как я хочу, а delete-icon-dash.png
- это прозрачный png с белой чертой в центре, где я хочу его на фоне.Затем я настраиваю кнопку следующим образом:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:[UIImage imageNamed:@"delete-icon-bg.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"delete-icon-dash.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(didTouchDeleteButton:) forControlEvents:UIControlEventTouchUpInside];
button.adjustsImageWhenHighlighted = NO;
button.contentMode = UIViewContentModeCenter;
Метод didTouchDeleteButton:
выглядит следующим образом:
- (void)didTouchDeleteButton:(UIButton *)sender
{
if (sender.selected) {
sender.selected = NO;
[UIView beginAnimations:@"undoRotateDash" context:nil];
[UIView setAnimationDuration:0.3];
sender.imageView.transform = CGAffineTransformMakeRotation(0.0);
[UIView commitAnimations];
} else {
sender.selected = YES;
[UIView beginAnimations:@"rotateDash" context:nil];
[UIView setAnimationDuration:0.3];
sender.imageView.transform = CGAffineTransformMakeRotation(-M_PI_2);
[UIView commitAnimations];
}
}