Вот кусок кода, в настоящее время сводящий меня с ума.Это UIView, с AVPlayerLayer (в качестве подслоя) и UITableView (в качестве подпредставления).Долгое нажатие на фильм должно скрыть фильм и показать таблицу.Длинное нажатие на таблицу, опять же, должно скрыть таблицу и показать фильм обратно.
playerView3 = [[UIView alloc] init];
[playerView3 addGestureRecognizer:tap3];
[playerView3 addGestureRecognizer:longPress3];
[playerView3 setFrame:CGRectMake(682, 0, 341, 768)];
[self.view addSubview:playerView3];
[self table3:CGRectMake(682, 0, 341, 768)];
[playerView3 addSubview:table3];
[table3 setHidden:YES];
[table3 setTag:3];
NSURL *url3 = [[NSBundle mainBundle] URLForResource:@"3" withExtension:@"MOV"];
AVURLAsset *asset3 = [AVURLAsset URLAssetWithURL:url3 options:nil];
AVPlayerItem *playerItem3 = [AVPlayerItem playerItemWithAsset:asset3];
player3 = [AVPlayer playerWithPlayerItem:playerItem3];
[player3 setActionAtItemEnd:AVPlayerActionAtItemEndNone];
playerLayer3 = [AVPlayerLayer playerLayerWithPlayer:player3];
[playerView3.layer addSublayer:playerLayer3];
playerLayer3.frame = playerView3.layer.bounds;
playerLayer3.videoGravity = AVLayerVideoGravityResizeAspect;
Вот метод действия для длинного нажатия: if (! (Sender.state == UIGestureRecognizerStateBegan)) return;
if([playerLayer3 isHidden])
{
[playerLayer3 setHidden:NO];
[table3 setHidden:YES];
}
else
{
[playerLayer3 setHidden:YES];
[table3 setHidden:NO];
}
Обратите внимание, что я даю одинаковые значения frame
как для таблицы, так и для фильма.Но я получаю их в разных областях экрана!Кто-нибудь может подсказать мне, что идет не так?
Вот несколько скриншотов:
Фильм, перед продолжительным нажатием, в ожидаемом месте (341, 0, 341, 768)
После долгого нажатия таблица находится здесь (в неожиданном месте), несмотря на то, что она имеет то же значение кадра, что и фильм (341, 0, 341, 768)
Теперь, если яу меня новое значение кадра (682, 0, 341, 768) для фильма:
Таблица даже не видна для этого кадра (682, 0, 341, 768) после долгого нажатия:
Любая помощь приветствуется!