0
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

if (interfaceOrientation == (UIInterfaceOrientationPortrait))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 260, 200)];

if (interfaceOrientation == (UIInterfaceOrientationLandscapeRight))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 400, 200)];

if (interfaceOrientation == (UIInterfaceOrientationLandscapeLeft))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 400, 200)];


if (interfaceOrientation == (UIInterfaceOrientationPortraitUpsideDown))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 260, 200)];

return YES;

 }

回転時に埋め込み YouTube のサイズと位置を変更しようとしていますが、うまくいきません。

たぶん回転していますが、位置も大きさも変わっていません。

4

2 に答える 2

3

コードを willAnimateRotationToInterfaceOrientation: メソッドに移動してみてください。

于 2012-07-17T13:10:49.233 に答える
2

viewDidLoad メソッドで、UIDeviceOrientationDidChangeNotification 通知をリッスンするためのオブザーバーを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self
                                      selector:@selector(didRotate:)
                                      name:@"UIDeviceOrientationDidChangeNotification" object:nil];

通知の取得を開始するには、UIDevice の beginGeneratingDeviceOrientationNotifications を使用する必要があります。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

didRotate メソッドで、現在の向きを取得し、それに応じてフレームを設定します。

didRotate メソッドは以下のようなものです。

- (void) didRotate:(NSNotification *)notification { 
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == (UIInterfaceOrientationPortrait))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 260, 200)];

if (orientation == (UIInterfaceOrientationLandscapeRight))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 400, 200)];

if (orientation == (UIInterfaceOrientationLandscapeLeft))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 400, 200)];

if (orientation == (UIInterfaceOrientationPortraitUpsideDown))
    [self embedYouTube:yout frame:CGRectMake(30, 155, 260, 200)]; 
}

また、dealloc メソッドでオブザーバーを削除することを忘れないでください。

[[NSNotificationCenter defaultCenter] removeObserver:self];
于 2012-07-17T13:22:25.783 に答える