Max*_*ral 4 objective-c rotation uiimageview uibarbuttonitem uiviewanimation
我已经在2个应用程序中看到了这种效果,我真的想找到如何做到这一点.
动画位于UIBarButtonItem中,仅适用于图像.图像是+符号,它旋转到X.
如果你想看到效果,你必须开始与某人对话,并在文本输入旁边有图像和表情符号的+按钮.或者在另一个应用程序中看到效果的视频,在他点击按钮后,您会看到它旋转到X,http://www.youtube.com/watch?v = S8JW7euuNMo.
我已经找到了如何做效果但只在UIImageView上,我必须关闭所有自动调整并且视图模式必须居中,然后将旋转变换应用于它.我尝试了很多尝试让它在条形项目中工作的方法,到目前为止,最好的方法是添加图像视图实例,然后设置它并将视图模式设置为居中并自动恢复,然后使用该图像视图进行自定义栏项目视图.但是当我这样做时,效果会有效,除非它这样做,图像会偏向一边而不是停留在已经存在的位置.我试过在动画之前获取中心并在动画期间设置它但是它什么也没做.
所以答案就是你必须创建一个Image视图的实例,然后设置它而不调整大小并且视图模式居中.然后将图像视图添加到具有自定义类型的UIButton,然后使用该按钮作为条形项的自定义视图.
- (IBAction)animate {
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{
imageView.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(45));
} completion:^(BOOL finished) {
imageView.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(0));
if ([imageView.image isEqual:[UIImage imageNamed:@"Add.png"]]) {
imageView.image = [UIImage imageNamed:@"Close.png"];
}
else imageView.image = [UIImage imageNamed:@"Add.png"];
}];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Add.png"]];
imageView.autoresizingMask = UIViewAutoresizingNone;
imageView.contentMode = UIViewContentModeCenter;
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 40, 40);
[button addSubview:imageView];
[button addTarget:self action:@selector(animate) forControlEvents:UIControlEventTouchUpInside];
imageView.center = button.center;
barItem = [[UIBarButtonItem alloc] initWithCustomView:button];
navItem.rightBarButtonItem = barItem;
}
Run Code Online (Sandbox Code Playgroud)