【发布时间】:2012-03-29 04:40:02
【问题描述】:
这是一段代码,目前让我发疯。它是一个 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)) 返回;
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) 的表格:
非常感谢任何帮助!
【问题讨论】:
标签: iphone ios ipad uitableview ios5