gpt4 book ai didi

像 Youtube 应用程序一样的 iOS float 视频窗口

转载 作者:技术小花猫 更新时间:2023-10-29 10:55:58 27 4
gpt4 key购买 nike

有没有人知道任何现有的库,或者任何关于如何获得与 Youtube 应用程序相同效果的技术。

视频可以“最小化”并悬停在屏幕底部 - 然后可以滑动以关闭或触摸以重新最大化。

参见:

视频正常播放:https://www.dropbox.com/s/o8c1ntfkkp4pc4q/2014-06-07%2001.19.20.png

视频最小化:https://www.dropbox.com/s/w0syp3infu21g08/2014-06-07%2001.19.27.png

(注意视频现在如何显示在屏幕右下角的小 float 窗口中)。

任何人都知道这是如何实现的,是否有任何现有的教程或库可用于获得相同的效果?

最佳答案

这听起来很有趣,所以我看了看 youtube。该视频看起来像是在顶部的 16:9 框内播放,下方有一个“另请参阅”列表。当用户最小化视频时,播放器会随着“另见” View 下降到右下角。同时,“另见” View 变为透明。

1) 像那样设置 View 并创建导出。这是它在 IB 中的样子。 (注意两个容器是兄弟)

enter image description here

2) 给视频 View 向上滑动和向下滑动手势识别器:

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *tallMpContainer;
@property (weak, nonatomic) IBOutlet UIView *mpContainer;
@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];

UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDown:)];
UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUp:)];

swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
swipeDown.direction = UISwipeGestureRecognizerDirectionDown;

[self.mpContainer addGestureRecognizer:swipeUp];
[self.mpContainer addGestureRecognizer:swipeDown];
}

- (void)swipeDown:(UIGestureRecognizer *)gr {
[self minimizeMp:YES animated:YES];
}

- (void)swipeUp:(UIGestureRecognizer *)gr {
[self minimizeMp:NO animated:YES];
}

3) 然后是了解当前状态并更改当前状态的方法。

- (BOOL)mpIsMinimized {
return self.tallMpContainer.frame.origin.y > 0;
}

- (void)minimizeMp:(BOOL)minimized animated:(BOOL)animated {

if ([self mpIsMinimized] == minimized) return;

CGRect tallContainerFrame, containerFrame;
CGFloat tallContainerAlpha;

if (minimized) {
CGFloat mpWidth = 160;
CGFloat mpHeight = 90; // 160:90 == 16:9

CGFloat x = 320-mpWidth;
CGFloat y = self.view.bounds.size.height - mpHeight;

tallContainerFrame = CGRectMake(x, y, 320, self.view.bounds.size.height);
containerFrame = CGRectMake(x, y, mpWidth, mpHeight);
tallContainerAlpha = 0.0;

} else {
tallContainerFrame = self.view.bounds;
containerFrame = CGRectMake(0, 0, 320, 180);
tallContainerAlpha = 1.0;
}

NSTimeInterval duration = (animated)? 0.5 : 0.0;

[UIView animateWithDuration:duration animations:^{
self.tallMpContainer.frame = tallContainerFrame;
self.mpContainer.frame = containerFrame;
self.tallMpContainer.alpha = tallContainerAlpha;
}];
}

我没有向这个项目中添加视频,但它应该直接加入。将 mpContainer 设为 MPMoviePlayerController View 的父 View ,它应该看起来很酷。

关于像 Youtube 应用程序一样的 iOS float 视频窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092414/

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