Как воссоздать вращающуюся кнопку минус, которую Apple использует в стандартном iOS UITableView? - PullRequest
0 голосов
/ 03 ноября 2011

Я хочу воссоздать вращающуюся кнопку минус, которую Apple использует в своих UITableViews в режиме редактирования.Вы можете увидеть анимацию в этом видео на YouTube .

Есть ли способ встроить эту кнопку (и анимацию) в мое собственное представление где-нибудь еще?Или я действительно должен воссоздать это?Будут ли мне нужны изображения для каждого штата?

Кроме того, вот изображение средней анимации кнопки из этого видео.

Button Animation

Спасибо!

Ответы [ 2 ]

3 голосов
/ 11 ноября 2011

Создание кнопки и использование свойств тени атрибута 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];
    }
}
2 голосов
/ 03 ноября 2011

Вы, вероятно, можете сделать это только с одним изображением:

Table Delete Button

, но вам нужно будет создать собственную анимацию, чтобы сделать поворот от горизонтального к вертикальному.Анимация кажется довольно простой, однако, вы могли бы просто изменить свойство imageOrientation UIImage с UIImageOrientationUp на UIImageOrientationLeft.

image.transform = CGAffineTransformMakeRotation(1.571); повернет изображение на 90 градусов.

Как уже упоминалось в комментариях, тень может выглядеть странно, делая это таким образом, поэтому я предлагаю найти изображение без тени, а затем использовать свойство UIImage layerдля поворота shadowRadius, shadowOffset и т. д.

UIImage Документация
CALayer Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...