标签: catransition

UINavigationController自定义动画

可能重复:
用于推送UIViewController的自定义动画

你们中的任何一个人都可以在UINavigationController中制作自定义动画,例如从中间展开吗?(例如,从启动器视图中选择新闻源时的Facebook应用)

我看到了一个技巧,如动画所需的下一个控制器的视图,但我使用Three20框架,并获得下一个控制器视图是困难的.

所以我唯一的选择是玩CATransition.我可以设法使用这段代码获得某种接近我想要的动画.

CATransition* transition = [CATransition animation];
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
transition.subtype = kCATransitionReveal;
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
Run Code Online (Sandbox Code Playgroud)

它会做什么?它将为渐变类型的动画制作动画.我想要的是像从CABasicAnimation缩放视图框架.

anim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)];
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)];
Run Code Online (Sandbox Code Playgroud)

你们知道怎么做到这一点吗?像CATransition里面的变换动画.

iphone animation uinavigationcontroller three20 catransition

19
推荐指数
0
解决办法
2704
查看次数

dismissModalViewController with transition:从左到右

我使用一个很好的方法来解雇我的模态视图控制器:

[self dismissModalViewControllerWithTransition:2];
Run Code Online (Sandbox Code Playgroud)

这使得幻灯片从左向右过渡,就像导航控制器弹出视图一样.

由于此方法是非公开方法,因此Apple不会接受它.如何在我的代码中编程这种动画(从左到右滑动,关闭模态视图,从右到左滑动以呈现模态视图)?

提前致谢

iphone animation catransition uiviewanimationtransition

17
推荐指数
2
解决办法
9955
查看次数

视图在被呈现后被UITransitionView阻止

我有一个侧面导航控制器,并通过UIButton呈现它.当我直接将这个NC作为根视图控制器时[self presentviewcontroller: NC animated: YES completion: nil],某些原因NC的菜单面被一个UITransitionView我无法消失的东西阻挡.

我附上了一张照片 查看层次结构. 这里 是另一个.

我尝试过以下方法:

UIWindow *window = [(AppDelegate *)[[UIApplication sharedApplication] delegate] window];
    window.backgroundColor = kmain;


    CATransition* transition = [CATransition animation];
    transition.duration = .5;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromTop;

    [nc.view.layer addAnimation:transition forKey:kCATransition];

    [UIView transitionWithView:window
                      duration:0.5
                       options:UIViewAnimationOptionTransitionNone
                    animations:^{ window.rootViewController = nc; }
                    completion:^(BOOL finished) {
                        for (UIView *subview in window.subviews) {
                            if ([subview isKindOfClass:NSClassFromString(@"UITransitionView")]) {
                                [subview removeFromSuperview];
                            }
                        }
                    }];
Run Code Online (Sandbox Code Playgroud)

但它非常hacky,并且随着窗口的rootviewcontroller在转换过程中发生变化,它会有点波动,导航控制器的一部分和右上角变黑.看起来很糟糕.

uiviewcontroller uinavigationcontroller catransition uiviewanimationtransition ios

16
推荐指数
3
解决办法
7764
查看次数

如何为removeFromSuperview设置动画

我通过以下方式为子视图的外观设置了动画:

CATransition *transition = [CATransition animation];
transition.duration = 0.3;
transition.type = kCATransitionReveal;
[webView.layer addAnimation:transition forKey:nil];

[self.view addSubview:webView];
Run Code Online (Sandbox Code Playgroud)

但现在我想删除我的subView.如何添加动画来执行此操作?像其他CATransition一样?什么时候加?在addSubview之前或之后?

objective-c catransition uiviewanimation ios

13
推荐指数
1
解决办法
6425
查看次数

从右向左推动时发生CATransition黑色问题

可能是这种类型的问题发生在很多开发者身上,我也试图在Google上找到但是没有运气来解决我的问题.

在我的rootViewController动态窗口设置中,我的意思是用户可以在运行时应用程序中更改根视图.所以,首先我删除当前rootViewControllerUIWindow然后我设置新rootViewControllerUIWindow特定动画.这个动画所做CATransitiontransition.type = kCATransitionPush;.
我的应用程序工作得很好,除了新的动画rootViewController.正如上面我说我用kCATransitionPushCATransition

编辑: 以下是我的代码:

-(void) changeRootViewController
{
    for(UIView *subViews in self.window.rootViewController.view.subviews)
        [subViews removeFromSuperview];
    [self.window.rootViewController.view removeFromSuperview];
    self.window.rootViewController.view = nil;
    [self.window.rootViewController removeFromParentViewController];

    MainRootViewController *mainRootVC = [[MainRootViewController alloc] init];

    CATransition *animation = [CATransition animation];
    [animation setDuration:0.4];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromRight];
    animation.fillMode = kCAFillModeForwards;
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
    self.window.rootViewController = mainRootVC;
    [[self.window layer] addAnimation:animation forKey:nil];
}
Run Code Online (Sandbox Code Playgroud)

我也尝试设置clearColorwhiteColor背景UIWindow.但不工作. …

cocoa-touch objective-c catransition ios

12
推荐指数
1
解决办法
2745
查看次数

使用Swift从底部向上推视图控制器

我想使用Swift推动一个视图控制器并为其设置动画,使其从底部显示并向上移动.我有以下代码来推动我的视图控制器:

let helloTableViewController = self.storyboard!.instantiateViewControllerWithIdentifier("helloTableViewController") as! HelloTableViewController
self.navigationController!.pushViewController(helloTableViewController, animated: true)
Run Code Online (Sandbox Code Playgroud)

我从另一个问题中找到了以下内容,但似乎无法在Swift中使用它:

CATransition *animation = [CATransition animation]; 
[animation setDuration:2]; 
[animation setType:kCATransitionPush]; 
[animation setSubtype:kCATransitionFromTop]; 
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
SecondView *sObj=[[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
[self.navigationController pushViewController:sObj animated:YES];
[[sObj.view layer] addAnimation:animation forKey:@"SwitchToView1"];
Run Code Online (Sandbox Code Playgroud)

animation catransition ios swift

12
推荐指数
5
解决办法
2万
查看次数

链接器命令失败,架构i386的未定义符号

我正在尝试做半页卷曲功能.这是我正在使用的代码:

#import <QuartzCore/QuartzCore.h>


CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:1.0f];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
[animation setType:(notCurled ? @"mapCurl" : @"mapUnCurl")];
[animation setRemovedOnCompletion:NO];
[animation setFillMode: @"extended"];
[animation setRemovedOnCompletion: NO];
notCurled = !notCurled;
Run Code Online (Sandbox Code Playgroud)

但是我遇到了以下错误

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_CATransition", referenced from:
      objc-class-ref in MyMapViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)


  "_OBJC_CLASS_$_CATransition", referenced from:


      objc-class-ref in SJMapViewController.o


ld: symbol(s) not found for architecture i386


clang: error: linker …
Run Code Online (Sandbox Code Playgroud)

iphone page-curl catransition ios4

10
推荐指数
1
解决办法
3万
查看次数

将UIView的CALayer动画化为圆角

我试图动画我视角的四舍五入.cornerRadius属性被列为可动画,但我似乎无法让它工作.我实际上也无法获得任何其他属性的动画,但角落是我感兴趣的.这是我的代码,它非常简单:

[CATransaction begin];
[CATransaction setValue: [NSNumber numberWithFloat: 2.0f] forKey:kCATransactionAnimationDuration];

self.myView.layer.cornerRadius = 50.0f;

[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)

我在这里想念的是什么?角落变圆,但它是瞬间而不是2秒钟.

animation core-animation rounded-corners catransition ios

8
推荐指数
2
解决办法
4451
查看次数

CATransition如何剪辑到UIView的界限?

我正在使用CATransition来滑动UIView的子视图.但问题是CATransition总是出现在整个屏幕上.它看起来像一团糟,因为我在窗口中有另一个UI元素,在转换时会重叠.如何通过UIView框架限制过渡帧?我试图将我的UIView的clipToBounds设置为YES.实际上它并没有帮助.

iphone animation uiview catransition

7
推荐指数
1
解决办法
2354
查看次数

CATransition黑色阴影

我想要做的是为我的模态呈现视图控制器创建自定义过渡效果(仅用于解除它).我只是希望它看起来像原始但更慢.问题是我的模态呈现VC和VC之间的黑色阴影我想回去.

到目前为止,这是我的代码:

let transition: CATransition = CATransition()
transition.duration = 0.6
transition.type = kCATransitionReveal
transition.subtype = kCATransitionFromBottom
self.view.window!.layer.add(transition, forKey: nil)
self.dismiss(animated: false, completion: nil)
Run Code Online (Sandbox Code Playgroud)

catransition ios swift

7
推荐指数
0
解决办法
310
查看次数