Как добавить пользовательскую кнопку на AVPlayerViewController в Objective - C iOS? - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу добавить кнопку в AVPlayerViewController, но я не могу этого сделать. Я добавил кнопку [AVPlayerViewController.contentOverlayView addSubview:_btnHandfree];, но она не активна, вот скриншот

enter image description here

Возможно, есть верхний слой, который невозможно найти.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Как описано в Apple docs.

Представление, отображаемое между видеоконтентом и элементами управления воспроизведением.

Вы можете отладить иерархию представлений, чтобы увидеть, где находится кнопка в стеке.

Так что, если вы добавите его непосредственно в представление?

[AVPlayerViewController.view addSubview:yourButton];
0 голосов
/ 27 апреля 2020

Попробуйте это. Это может помочь.

#import "ViewController.h"
#import <AVKit/AVKit.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.


}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];


    NSURL *url=[[NSBundle mainBundle]URLForResource:@"videoplayback" withExtension:@"mov"];
    AVPlayer *player = [AVPlayer playerWithURL:url];
    AVPlayerViewController *playerViewController = [AVPlayerViewController new];
    playerViewController.player = player;

    UIButton *button = [[UIButton alloc] initWithFrame: CGRectMake(20, 100, 100, 50)];
    [button addTarget:self
               action:@selector(aMethod:) forControlEvents:UIControlEventTouchDown];

    [button setTitle:@"Button" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [button setBackgroundColor:[UIColor whiteColor]];

    [self presentViewController:playerViewController animated:YES completion:^{
      [playerViewController.player play];
    }];
    [self.player addSubview:playerViewController.view];
    [self.view addSubview:button];

    for(UIWindow* tempWindow in [[UIApplication sharedApplication]windows]){
        for(UIView* tempView in [tempWindow subviews]){

            if ([[tempView description] rangeOfString:@"UIInputSetContainerView"].location != NSNotFound){
                [tempView addSubview:button];

                break;
            }
        }
    }
}

-(void)aMethod:(UIButton*)sender {
    NSLog(@"test");
}


@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...