我想在编辑模式下重新创建Apple在其UITableViews中使用的旋转减号按钮。您可以在this video on YouTube中看到动画。
有没有办法将此按钮(和动画)嵌入到我自己的视图中?或者我真的必须重新创建它?我需要为每个州制作图像吗?
此外,这里是该视频中间动画按钮的图片。
谢谢!
答案 0 :(得分:3)
创建按钮并使用layer
属性的阴影属性将不起作用,因为当图像旋转时,您不希望阴影也旋转。我通过执行以下操作重新创建了此效果。我创建了两个35像素正方形的图像。一旦调用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];
}
}
答案 1 :(得分:2)
你可以用一张图片来做到这一点:
但是你需要创建一个自定义动画来进行从水平到垂直的旋转。动画看起来很简单,你可能只需将。imageOrientation
的{{1}}属性从UIImageOrientationUp
更改为UIImageOrientationLeft
image.transform = CGAffineTransformMakeRotation(1.571);
会将图像旋转90度。
正如评论中所提到的,阴影可能看起来很奇怪,所以我建议找一个没有阴影的图像,然后使用UIImage
layer
属性来旋转shadowRadius
,shadowOffset
等。