2012-03-29 14 views
0

現在、コードがあり、現在ナットを運転しています。これは、AVPlayerLayer(サブレイヤとして)とUITableView(サブビューとして)を持つUIViewです。ムービーを長押しすると、ムービーが非表示になり、テーブルが表示されます。テーブルを長押しすると、テーブルを隠してムービーを戻す必要があります。 (!(sender.state == UIGestureRecognizerStateBegan)) リターン場合;:iOS:不正なフレーム配置

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; 

ここlongpressingのためのアクションメソッドです私はテーブルと映画の両方に同じframe値を与えている

if([playerLayer3 isHidden]) 
{  
    [playerLayer3 setHidden:NO]; 
    [table3 setHidden:YES]; 
} 
else 
{ 
    [playerLayer3 setHidden:YES]; 
    [table3 setHidden:NO]; 
} 

注意。しかし、私は画面の別の領域にそれらを取得します!誰かが間違っていることを私に導くことができますか? longpress前に、longpress後(341、0、341、768) The movie, before the longpress, at its expected location of (341, 0, 341, 768)

のその期待の場所で、テーブルが(にここにある、

映画:ここ

は、いくつかのスクリーンショットです映画(341、0、341、768と同じフレーム値を有するにもかかわらず、予想外の場所に)) After the longpress, the table is here (at an unexpected location) DESPITE HAVING THE SAME FRAME VALUE as the movie (341, 0, 341, 768)

今、私は)(682、0、341、768の新たなフレーム値を有していた場合映画: Now, I am having a new frame value of (682, 0, 341, 768)

テーブルもlongpress後、このフレーム(682、0、341、768)は見られない。 The table is not even seen for this frame (682, 0, 341, 768) after the longpress

任意の助けを大幅に高く評価されています!

答えて

2

フレームはスーパービューを基準にしています。 playerview3をself.viewに、table3をplayerview3に追加しました。

フレームを同じにしたい場合は、self.viewにのみテーブルを追加する必要があります。これは、ライン上の

[playerView3 addSubview:table3]; 

[self.view addSubview:table3]; 

で変更する必要がありますそして、あなたはそれからplayerView3に表3を追加したい場合は、そのフレームが682,0と0,0とないで始めるべきであることを意味します。

希望すると助かります。

+0

ダーン!それはそうです。私はもっ​​と*見た方がいいでしょう!どうもありがとう。 – Ravi

1

tableviewはplayerviewのサブビューであり、そのフレームはplayerviewのフレームに基づいています。それらを同じ空間に表示させるには、tableviewをself.viewのサブビューとして追加するか、手動でフレームを調整する必要があります。

[self.view addSubview:table3]; 
+1

ありがとう! Apurvの答えはあなたの前であったので、私はそれを受け入れ、あなたのものをupvoted。 – Ravi

関連する問題