Tag: caanimation

通过AVMutableVideoComposition和CAAnimation输出黑色video

我正在构buildiOS应用程序,可以loggingvideo,并使用AVFoundation和CAAnimation在录制的video上添加animation叠加。 所有子function工作正常,但最终video的背景是黑色,但animation播放。 这不是渲染我select的背景video。 我已经使用AVAssetWriter来录制video,并在相机胶卷上播放。 但是如果我使用这个录制的video添加叠加,最终的video背景是黑色的。 有趣的是,如果我通过本机的iOS相机应用程序录制video,并使用它来添加覆盖,它是完美的工作。 我检查了这个问题,但没有为我工作。 黑色videoCAAnimation和AVFoundation AVAssetExportSession 任何帮助将不胜感激。 谢谢

UICollectionviewCellanimation

我想animation的collectionview单元格,animation应该是这样的: 第一个单元出现,然后延迟一段时间后, 第二个单元将出现一些animation ,这将继续像所有的单元格一样。 如何做到这一点?

CAAnimation – 改变animation最后一帧的属性?

我正在animation一个UIView(或更确切地说它的CALayer),在animation结束时,它不再可见(我做了一个3D变换,使它围绕y旋转了90°,想象一个门向你开启),虽然它在技​​术上“可见”,因为它的框架仍然在屏幕上。 在animation结束时,我从animationDidStop:finished:方法的超级视图中移除了该视图。 问题是,有一个简短的闪烁,你看到它的原始未转换状态之前,它被删除的视图。 我想知道如何解决这个问题。 我不知道。 我试图animation层的不透明度,但也没有工作。 闪烁仍然发生。 有任何想法吗? 我可以提供任何东西,或者也许有人在这里有过这个问题吗? 编辑:这里有一些代码(向下滚动,并寻找内部如果(isHalfDone)其中[子视图removeFromSuperview]; – (void) pageOpenView:(UIView *)viewToOpen duration:(NSTimeInterval)duration pageTurnDirection:(PageTurnDirection) p{ // Remove existing animations before stating new animation [viewToOpen.layer removeAllAnimations]; // Make sure view is visible viewToOpen.hidden = NO; // disable the view so it's not doing anythign while animating viewToOpen.userInteractionEnabled = NO; float dir = p == […]

使用UINavigationController边缘滑动时,CABasicAnimation会重置

我有以下CABasicAnimation在我的viewDidLoad运行一个UINavigationController的视图控制器: CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; animation.duration = 1; animation.additive = NO; animation.removedOnCompletion = NO; animation.fillMode = kCAFillModeForwards; animation.fromValue = [NSNumber numberWithFloat:0]; animation.toValue = [NSNumber numberWithFloat:-1*(((-windBearing+180) * M_PI) / 180)]; [compass.layer addAnimation:animation forKey:@"90rotation"]; 当我使用边缘轻扫手势慢慢地回溯,animation重置到初始状态,这是相当不和谐的。 我有我的fillMode设置和removedOnCompletion设置为NO ,我错过了什么?

animation时更新视图的框架

我正在做这样的animation: CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; animation.duration = 100.0; animation.path = self.animationPath.CGPath; [view.layer addAnimation:animation forKey:@"animation"]; 工作正常,但是,现在尝试检测在屏幕上移动的对象的触摸时失败: – (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { for (UIView* subview in self.subviews ) { if ( [subview hitTest:[self convertPoint:point toView:subview] withEvent:event] != nil ) { [self handleTap]; return YES; } } return NO; } 它失败了,因为视图的框架不再是它在animation时在屏幕上的明显位置。 我怎样才能让pointInside与正在animation的视图一起工作?

与CALayers CAAnimation偶尔创build闪烁的animation(包括video)

我的应用程序需要一个静止的照片,并animation口区域模仿说话。 但是,大约1/4的时间内,一些隐藏的calayers将在整个animation中不断闪烁。 这是应用程序正常工作时的样子。 这是应用程序在发生故障时的样子。 编辑:一个更好的video 我假设这个问题是path相关的。 在应用程序中,用户在嘴部区域周围创build一个path(在video中简要显示),这将是animation区域。 有时path会导致一个平滑的animation,有时候会导致上面的小故障。 此外,如果我按下“back”并尝试用animation重新加载控制器,则毛刺会持续存在,而如果在重新加载之前更改path,则偶尔会消失。 如果不是path相关,我已经消除的一些罪魁祸首是: 图像types/来源 – 有时它将适用于图像a,但不适用于图像b,其他时间适用于图像b,但不适用于a。 我已经尝试了照片库的图像以及从互联网上保存的图像。 iPhone vs模拟器 – 两个设备上都出现问题 animation数量 – 有时会在第一次尝试时发生; 其他时间会发生在5日或6日尝试。 下面是从视图的代码animation。 我首先创build一个全黑的图层,然后是一个图层减去嘴部区域,最后是一个刚才的嘴部区域。 然后,我改变了嘴巴的位置,使位移变成黑色,看起来像张开的嘴。 编辑:另外,如果我通过从面层去除蒙版去除嘴孔,animation运行平稳。 – (id)initWithFrame:(CGRect)frame leftPt:(CGPoint)point0 rightPt:(CGPoint)point2 vertex1:(CGPoint)vertex1 vertex2:(CGPoint)vertex2 andPicture:(UIImage *)pic{ self = [super initWithFrame:frame]; if (self) { p0 = point0; p2 = point2; v1 = vertex1; v2 = vertex2; picture = […]

如何创build像月球一样在地球周围旋转的CAAnimation效果,并在IOS中同时自行旋转?

我知道在IOS中创造使月球在地球上盘旋的效果很简单。 假设月亮是一个CALayer对象,只要把这个对象的锚点改为地球,那么它就会在地球上绕行。 但是如何创造同时旋转的月球呢? 因为月球只能有一个锚点,似乎我不能让这个CALayer对象自己旋转了。 你们有什么感想? 谢谢。

为什么改变标签,停止在iOS应用程序的animation?

我在我的应用程序中有多个选项卡。 我一个视图控制器有animation运行,当我切换到另一个视图控制器,并再次来animation视图控制器,然后animation停止, 任何人都可以指导我工作我的Xcode甚至切换在iPhone应用程序选项卡? – (IBAction)btn:(id)sender { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *soundStatus = [defaults objectForKey:@"Sound_Swich"]; //NSLog(@"soundstatus is %@ ", soundStatus); if([soundStatus isEqual:@"YES"]) { [self soundEffect]; } if ([btnpress isEqualToString:@"start"]) { btnpress= @"pause"; int radius = 100; circle = [CAShapeLayer layer]; circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 2.0*radius, 2.0*radius) cornerRadius:radius].CGPath; circle.fillColor = [UIColor clearColor].CGColor; circle.strokeColor = […]

使用AVFoundation混合图像和video

我试图在图像拼接到一个预先存在的video来创build一个新的video文件在Mac上使用AVFoundation。 到目前为止,我已经阅读了苹果文档的例子, ASSETWriterinput从iPhone上的UIImagesvideo制作video问题 使用AVVideoCompositionCoreAnimationTool将video与静态图像混合在CALayer中 AVFoundation教程:添加覆盖和animationvideo和一些其他的SO链接 现在,这些已经被certificate是非常有用的,但是我的问题是,我没有创build一个静态水印或覆盖,我想要在video的各个部分之间放置图像。 到目前为止,我已经设法获取video,并创build空白部分插入这些图像,并将其导出。 我的问题是让图像插入自己在这些空白部分。 我能看到的唯一方法就是创build一系列的animation图层,以在正确的时间改变其不透明度,但似乎无法使animation起作用。 下面的代码是我用来创buildvideo片段和图层animation。 //https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_Editing.html#//apple_ref/doc/uid/TP40010188-CH8-SW7 // let's start by making our video composition AVMutableComposition* mutableComposition = [AVMutableComposition composition]; AVMutableCompositionTrack* mutableCompositionTrack = [mutableComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; AVMutableVideoComposition* mutableVideoComposition = [AVMutableVideoComposition videoCompositionWithPropertiesOfAsset:gVideoAsset]; // if the first point's frame doesn't start on 0 if (gFrames[0].startTime.value != 0) { DebugLog("Inserting vid at 0"); // […]

animationBezier曲线的一个点

是可以animation一个贝塞尔曲线的一个点? 我正在尝试从一条线向一个箭头平滑过渡。 这是代码中的行 //// Color Declarations UIColor* white = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 0.374]; //// Group { //// Bezier Drawing UIBezierPath* bezierPath = [UIBezierPath bezierPath]; [bezierPath moveToPoint: CGPointMake(30.5, 43.5)]; [bezierPath addLineToPoint: CGPointMake(30.5, 29.59)]; [bezierPath addLineToPoint: CGPointMake(30.5, 15.5)]; bezierPath.lineCapStyle = kCGLineCapRound; bezierPath.lineJoinStyle = kCGLineJoinBevel; [white setStroke]; bezierPath.lineWidth = 5.5; [bezierPath stroke]; } […]