我正在附加图像到MFMailComposeViewController
一切都很好,但我想知道这是可能给附件的动画?iOS:是否可以使用动画技术来处理MFMailComposeViewController?
例如: -当我们在iPhone设备中添加图片库中的图片时。并选择邮件按钮,所有选定的图片移动在MailComposeViewcontroller
与尼斯动画。
所以,请任何好友指导我这个东西是否可能。如果是,那么我如何设置附件动画。
我正在附加图像到MFMailComposeViewController
一切都很好,但我想知道这是可能给附件的动画?iOS:是否可以使用动画技术来处理MFMailComposeViewController?
例如: -当我们在iPhone设备中添加图片库中的图片时。并选择邮件按钮,所有选定的图片移动在MailComposeViewcontroller
与尼斯动画。
所以,请任何好友指导我这个东西是否可能。如果是,那么我如何设置附件动画。
这是iOS自定义动画效果,并没有公开为iOS API,所以没有你无法获得这种效果。我知道这个效应没有暴露给开发者的原因是Apple iOS 6 Docs。只有一种方法处理animate
及其标准。
你可以尝试的是这个。在用户从他的照片库(即从ALAssetsLibrary
)中选择图像后,可以为看起来像MFMailComposeViewController
的“图像”创建动画。该动画将与iOS提供的类似,即出现背景淡入淡出,MFMailComposeViewController
以及位于邮件“正文”部分的图像。一旦动画完成,请删除MFMailComposeViewController
的“图像”,并显示使用animaiton:FALSE
选项调用的实际呼叫MFMailComposeViewController
。希望我清楚。基本上你所提供的是一种幻觉MFMailComposeViewController
,一旦动画完成,带走错觉并展示现实。
从理论上讲,这可能工作,但确切的动画时间和用户感知的感觉必须进行测试。
很好的解释。可能会很难实现..? –
@NitinGohel的实现并不难。但是你可能不得不动用动画的时间来获得正确的效果,这样用户就不会感觉到这种转变。请不要叫我先生!那是什么人称我的爷爷! –
最后一条建议。仔细研究ios动画。仔细观察哪些元素正在移动/变化/褪色/消失/计时等等。记下它并尝试将其复制到您的代码中。它应该很有趣! –
存在一些半解决方案。事实上,您可以添加任何UIView
作为您主应用程序窗口的子视图。它会比所有应用程序内容更重要。使用这个,你可以模拟动画附加图像到MailComposeViewcontroller
看到我的示例代码。此代码将图像视图从屏幕顶部滑动到邮件编辑器,以便模仿将图像添加为附件。一切都被评论。
// 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];
}];
}];
当然,代码可能需要一些调整和抛光,但它显示的概念。你可以玩动画来产生更好的效果。我会添加很多动画调整,但我想保持示例代码尽可能短;-)
不,不可能。 – sagarcool89
不默认。 – Jasper
看到我的答案。它不可能做与苹果电子邮件完全相同的东西,但你至少可以模拟类似的效果 –