Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS: is it possible to attechment of MFMailComposeViewController with Animation?

I am working on attach images into MFMailComposeViewController everything is fine working but i want to know that is it Possible to give animation of Attachment?

For Ex:- When we attach images from Photo Gallery in iPhone Device. and while select mail Button that all selected Images Move's in MailComposeViewcontroller with Nice ANIMATION.

So please can any-buddy guide me this stuff is possible or not.? and if YES then how can i set Animation of Attachment.

like image 378
Nitin Gohel Avatar asked Oct 22 '22 06:10

Nitin Gohel


1 Answers

There exists some semi-solution. You can in fact add any UIView as subview of you main app's window. It will than sit on top of all apps content. Using this you can simulate animation of attaching image to MailComposeViewcontroller

See my example code. This code slides image view from top of the screen to mail composer so it imitates adding of image as attachment. Everything is commented.

//  Get apps main window
UIWindow *window = [[UIApplication sharedApplication] keyWindow];

//  Setup frames of animated image view in apps window - adjust to your needs
CGRect finalImageFrame = CGRectMake(30, 220, window.frame.size.width-60, 100);
CGRect initialImageFrame = finalImageFrame;
initialImageFrame.origin.y = -initialImageFrame.size.height;

//  Create image view to be animated as attachment
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage"]];
imageView.frame = initialImageFrame;
imageView.backgroundColor = [UIColor redColor];

//  Add animated image view to window
[window addSubview:imageView];

//  Animate image view with slide in from top
[UIView animateWithDuration:0.4
                 animations:^{
                     imageView.frame = finalImageFrame;
                 }];

//  Present mail composer
[self presentViewController:mailComposer animated:YES completion:^{

    //  Once the controller appears, hide the image view - adjust this animation according to you needs
    [UIView animateWithDuration:0.4
                     animations:^{
                         imageView.alpha = 0;
                     } completion:^(BOOL finished) {
                         [imageView removeFromSuperview];
                     }];

}];

Of course the code may need some adjustments and polishing, but it shows the concept. You can play with animations to make some better effect. There is a lot of animation tweaks I would add, but I wanted to keep the example code as short at it can be ;-)

like image 182
Lukas Kukacka Avatar answered Nov 01 '22 19:11

Lukas Kukacka