gpt4 book ai didi

iphone - 实现自定义动画以在 iPad 上从指定 View 呈现模态视图

转载 作者:IT王子 更新时间:2023-10-29 07:55:43 27 4
gpt4 key购买 nike

在 iPad 上我们有更多的工作空间,因此呈现全屏模态视图并不理想。

我知道如何在新的 formSheet 中呈现模态视图,并且可以在这个问题上找到一个接近的方法:iPad iTunes Animation

问题是你不能选择动画的来源,所以它只是默认并从中心出现,我想自定义它以便它从特定位置出现。

我能找到的这个动画的最佳示例可以在 this video 的前几秒看到

如果有人可以使用代码、教程或文档为我指明正确的方向,我将不胜感激!

更新:

经过一些调查,我发现这可以在第一部分使用图层和核心动画来完成;然后将其动画化为 formSheet 模态视图,但我仍然不太了解如何实现它,希望你们能提供帮助!

最佳答案

我所做的是为 UIViewController 创建一个新类别,如下所示

UIViewController+ShowModalFromView.h

#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>

@interface UIViewController (ShowModalFromView)

- (void)presentModalViewController:(UIViewController *)modalViewController fromView:(UIView *)view;

@end

UIViewController+ShowModalFromView.m

#import "UIViewController+ShowModalFromView.h"

@implementation UIViewController (ShowModalFromView)

- (void)presentModalViewController:(UIViewController *)modalViewController fromView:(UIView *)view
{
modalViewController.modalPresentationStyle = UIModalPresentationFormSheet;

// Add the modal viewController but don't animate it. We will handle the animation manually
[self presentModalViewController:modalViewController animated:NO];

// Remove the shadow. It causes weird artifacts while animating the view.
CGColorRef originalShadowColor = modalViewController.view.superview.layer.shadowColor;
modalViewController.view.superview.layer.shadowColor = [[UIColor clearColor] CGColor];

// Save the original size of the viewController's view
CGRect originalFrame = modalViewController.view.superview.frame;

// Set the frame to the one of the view we want to animate from
modalViewController.view.superview.frame = view.frame;

// Begin animation
[UIView animateWithDuration:1.0f
animations:^{
// Set the original frame back
modalViewController.view.superview.frame = originalFrame;
}
completion:^(BOOL finished) {
// Set the original shadow color back after the animation has finished
modalViewController.view.superview.layer.shadowColor = originalShadowColor;
}];
}

@end

这很简单。如果这对您有帮助,请告诉我。

更新

我已经更新了使用动画 block 而不是 [UIView beginAnimations:nil context:nil];/[UIView commitAnimations] 对的答案。

关于iphone - 实现自定义动画以在 iPad 上从指定 View 呈现模态视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6605959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com