添加视频背景视图的最佳做法是什么?

时间:2015-06-22 09:06:59

标签: ios objective-c swift video

我想添加视频(或gif)的背景视图,例如在应用“优步”中 我想在我的应用中长时间使用视频背景视图。

我想知道这些问题的答案:

  • 它们会消耗更少的电池能量
  • 我可以在iPhone或iPad上使用
  • 此方法的表现

注册表格的屏幕截图

enter image description here

6 个答案:

答案 0 :(得分:7)

首先,

您有两个主要选择:使用带有GIF的 imageView 将视频用作AVPlayer或MPMoviePlayerController的背景。你可以找到两种方式的例子,这里有几个:

回答你的问题:

  

它们会消耗更少的电池能量

通常使用视频:如用户 vikingosegundo 视频所述,通常会对其进行优化,并且其编解码器会处理GPU;显示GIF应该是唯一的" CPU工作"因为它只是显示一个帧循环。因此,能量比较是在简单的帧循环(GIF)和更复杂的帧循环之间,可以通过多种方式加速(视频)。然而,根据我的经验,小GIF无论如何都能提供良好的表现。

  

我可以在iPhone或iPad上使用它吗

两者都要注意宽高比和自动布局约束

  

此方法的表现

两种情况都很出色,但您必须小心GIF或视频的大小:您的文件(GIF或视频)越大,性能就越差。对于视频更准确地说,质量越高,性能就越差,而视频的持续时间不应该产生影响。

答案 1 :(得分:4)

从下面链接下载背景视频播放库示例源代码的流行和开源库之一

  1. VideoCover-iOS-Demo
  2. AMLoginViewController Uses GPUImage For Filter videos.
  3. 愿这个有用了。

答案 2 :(得分:0)

为此,您可以使用大量开源组件。

例如,这个支持GIF,电影播放

https://github.com/kaiinui/KIChameleonView

或者用于GIF播放

https://github.com/liyong03/YLGIFImage

答案 3 :(得分:0)

您可以直接使用视频&播放重复模式,

OR

您可以将图像与animationImages类的默认UIImageView属性一起使用。

如下所示,

 YourImageView.animationImages = [NSArray arrayWithObjects:  
                                   [UIImage imageNamed:@"sample_1.png"],
                                   [UIImage imageNamed:@"sample_2.png"],
                                   [UIImage imageNamed:@"sample_3.png"],
                                   [UIImage imageNamed:@"sample_4.png"],
                                   [UIImage imageNamed:@"sample_5.png"],
                                   nil];

 // How many seconds it should take to go through all images one time.
 YourImageView.animationDuration = 5.0;

 // How many times to repeat the animation (0 for indefinitely).
 YourImageView.animationRepeatCount = 4;

 [YourImageView startAnimating];

希望这会对你有所帮助。

答案 4 :(得分:0)

您可以使用.png.jpeg格式的图片集来实现此目的,并将图片分配给UIImageView

UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 548)];

//Add images which will be used for the animation using an array. Here I have created an array on the fly
NSMutableArray *drawingImgs = [NSMutableArray array];
[drawingImgs addObject:[UIImage imageNamed:@"image1.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image2.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image3.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image4.png"]];
[drawingImgs addObject:[UIImage imageNamed:@"image5.png"]];

backgroundImageView.animationImages = drawingImgs;
//Set the duration of the entire animation
backgroundImageView.animationDuration = 0.5;

//Set the repeat count. If you don't set that value, by default will be a loop (infinite)
backgroundImageView.animationRepeatCount = 1;

//Start the animationrepeatcount
[backgroundImageView startAnimating];

答案 5 :(得分:0)

我使用的是xCode 7和iOS 9。 我使用了gif图像,它工作正常。

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Name of your image" ofType:@"gif"];
    NSData *gif = [NSData dataWithContentsOfFile:filePath];
    UIWebView *webViewBG = [[UIWebView alloc] initWithFrame:self.view.frame];
    [webViewBG loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
    webViewBG.userInteractionEnabled = NO;
    [self.view addSubview:webViewBG];