小编Joh*_*pia的帖子

从UINavigationController(IOS 5)弹出UIViewController时的奇怪动画

我正在实现一个容器视图控制器,其中屏幕的一部分是包含视图的UINavigationController视图.我viewDidLoad:是这样的:

// ...
UIViewController *myNavigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyNavigationController"];
[self addChildViewController:myNavigationController];
[self.myContainerView addSubview:myNavigationController.view];
[myNavigationController didMoveToParentViewController:self];
// ...
Run Code Online (Sandbox Code Playgroud)

没有旋转问题,并将新的视图控制器推入导航控制器工作正常.但是当用户点击背面时UIBarButtonItem,不仅仅是self.myContainerView整个self.view动画向上,类似于kCATransitionFromBottom,而不是普通的导航控制器弹出动画.经过几次调试后,我意识到我的视图控制器viewWillDisappear:viewWillAppear:方法在弹出时会被调用myNavigationController.

不幸的是,我被困住了.如果有人能够了解到底发生了什么以及如何解决这个问题,我将不胜感激.

编辑: 好的,没关系.我忘了shouldAutorotateToInterfaceOrientation:在导航控制器的一个孩子身上实施.返回YES修复了问题.

uinavigationcontroller ipad ios

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

使用转换CIFilter进行CATransition

我正在尝试使用新的iOS 6过渡动画(CIBarsSwipeTransition,CICopyMachineTransition等)CATransitionfilter属性.该CIFilter文件说,这些都可以在iOS 6,并没有什么上的CATransition文件说,该filter财产不能使用.

但是,我似乎无法让他们工作.我不知道Apple是否没有提到功能的不可用性,或者我只是错过了让它工作的东西.这是我如何设置它:

CIFilter *transitionFilter = [CIFilter filterWithName:@"CIBarsSwipeTransition"];
[transitionFilter setDefaults];

CATransition *transition = [CATransition new];
transition.duration = 0.4f;
transition.filter = transitionFilter;

[self.view.layer addAnimation:transition forKey:kCATransition];
Run Code Online (Sandbox Code Playgroud)

任何指针都表示赞赏.

core-animation core-image ios ios6

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

可以使用AVAssetWriter的核心动画?

我知道AVVideoCompositionCoreAnimationTool使用Core动画的方法,并且我使用了它AVMutableComposition,但我正在寻找一种方法来完成相同的动画AVAssetWriter.基本上我想创建CAAnimation(s)并使用AVAssetWriter缓冲时间戳作为动画计时方法.然后为每个帧拉动画属性.

这有可能吗?任何指导正确的方向将不胜感激.

编辑:如果你想知道为什么不只是使用AVAssetExportSession,那是因为我的要求阻止我使用压缩预设,而且我需要CIFilter使用目前无法CALayer在iOS上使用s的s.

core-animation ios avassetwriter

6
推荐指数
0
解决办法
447
查看次数

CAEmitterLayer否定开始时间可能吗?

我正试图让CAEmitterLayers和CAEmitterCells从父母持续时间中间的某个地方开始动画.这有可能吗?我尝试使用beginTimetimeOffset属性玩,但我似乎无法让这个工作.

为后代添加了一些代码:(假设我希望发射器在第5秒开始)

    CAEmitterLayer *emitter = [CAEmitterLayer new];
    // emitter.beginTime = -5.0f; // I tried this
    // emitter.timeOffset = 5.0f; // I also tried this, with beginTime = 0.0, and with beginTime = AVCoreAnimationBeginTimeAtZero
    /* set some other CAEmitterLayer properties */

    CAEmitterCell *cell = [CAEmitterCell new];
    // cell.beginTime = -5.0f; // Then I saw that CAEmitterCell implements CAMediaTiming protocol so I tried this
    // cell.timeOffset = 5.0f; // and this
    /* set some …
Run Code Online (Sandbox Code Playgroud)

core-animation ios caemitterlayer

6
推荐指数
1
解决办法
865
查看次数