Мне сложно понять, при каких условиях AVPlayer readyForDisplay будет "ДА" для локально сохраненного видеоклипа.Я создаю приложение, основной вид которого имеет два подпредставления, каждое из которых является пользовательским подклассом UIView, который содержит AVPlayer и APPlayerLayer для отображения видео.Приложение переключается между отображением этих двух подпредставлений в ответ на пользовательский ввод.В моем главном контроллере у меня есть что-то вроде этого:
- (void)viewDidLoad
{
firstView = [VideoView alloc] initWithFileName:@"clip1.mov"]]; // VideoViews are assigend to instance variables
secondView = [VideoView alloc] initWithFileName:@"clip2.mov"]];
[[self view] addSubview:firstView];
}
Инициализация этих представлений загружает AVPlayer и создает AVPlayerLayer.Когда приложение запущено, первый клип отображается правильно.В ответ на пользовательский ввод, второе видео отображается вместо первого, например так:
- (void)responseToEvent
{
NSLog(@"%i", [targetView.readyForDisplay]); // prints out "1" in the console
[firstView removeFromSuperview];
[self.view addSubview:secondView];
}
Это отлично работает.ОДНАКО, если я изменю viewDidLoad, чтобы поместить secondView в NSMutableDictionary следующим образом:
- (void)viewDidLoad
{
firstView = [VideoView alloc] initWithFileName:@"clip1.mov"]];
VideoView *secondView = [VideoView alloc] initWithFileName:@"clip2.mov"]];
[someViews setObject: secondView forKey:viewIndex];
[[self view] addSubview: firstView];
}
... и затем позже получу представление из некоторых ViewS, как это:
- (void)responseToEvent
{
VideoView *secondView = [neighborViews objectForKey:link.targetView.pftViewId];
NSLog(@"%i", [targetView.readyForDisplay]); // prints out "0" in the console
[firstView removeFromSuperview];
[self.view addSubview:secondView];
}
... это не работает.Видео не показано.Я не могу понять, почему помещение содержащего представления в NSMutableDictionary приведет к тому, что AVPlayer не будет готов и не будет отображать видео.Кроме того, видео никогда не появляется (оно никогда не становится «готовым»).Кто-нибудь знает, что здесь происходит?