[güncelleme]iPhone MPMoviePlayerViewController
olarak ben tüm yönlerde desteklemeye tüm üst görünümü denetleyicileri değişti önerildi. Uygulama yapmam şu şekildedir: AppDelegate> RootViewController> Videolar> VideoDetails> MPMoviePlayerViewController.
Tüm yönelimleri desteklemek için bunları değiştirirsem, video manzara modunda oynatılır. Ancak tüm yönelimleri desteklemek istediğim şey değil ve başka sorunlara da neden oluyor. Yapabileceğim başka işler var mı?
Teşekkür
[/ güncelleme]
Ben MPMoviePlayerViewController özel bir alt sınıfını kullanarak videoları görüntüleyen bir portre tabanlı iPhone app var. kullanıcı presler Ben bu sınıfın bir örneğini oluşturmak oynamak ve modally sunmak aşağıdaki gibi:
- (IBAction) playPressed:(id)sender {
NSString *filepath = [[NSBundle mainBundle] pathForResource:self.currentVideoModel.videoFileName ofType:@"m4v"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
// MovieViewController is just a simple subclass of MPMoviePlayerViewController
self.moviePlayerController = [[MovieViewController alloc] initWithContentURL:fileURL];
// full screen code.
[self.moviePlayerController.moviePlayer setScalingMode:MPMovieScalingModeFill];
[self.moviePlayerController.moviePlayer setFullscreen:TRUE];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerController];
[self presentMoviePlayerViewControllerAnimated:self.moviePlayerController];
}
sorun portre ince oynadığını ama manzara iPhone açtığınızda video halen portre oynadığı ve değil manzara :(uygulamasındaki tüm görünüm denetleyicileri yalnızca dikey yönünü desteklemek
Benim MPMoviePlayerViewController alt sınıf sadece yönü değişikliklerine ilişkin izin için aşağıdaki yöntemi geçersiz kılar ama hiç bir etkisi yoktur.
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
hatta ettikVideoyu programlı olarak döndürmeye çalıştı ama kesinlikle şanssız, her zaman portre modunda kalır.
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI/2)];
return true;
}
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI * 2)];
return true;
}
else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
[self.view setTransform:CGAffineTransformIdentity];
return true;
}
else return false;
}
Döndürme desteği * sıralama * heirarchical. Bu yüzden bir film oynatıcı denetleyicisi sunuyorsanız ve döndürmenize izin vermiyorsa, ilk hata ayıklama adımı, film oynatıcınıza 'shouldOutorotate..' yöntemiyle giden HER görünüm denetleyicisini kontrol etmek ve yalnızca 'YES; '(Daha sonra daha fazla güçlük kaydetmek istiyorsanız bunu aşamalı olarak yapabilirsiniz).Daha sonra, portre için kilitlenene kadar bunları birer birer tekrar port haline getirin ve hangi UIKit'lerin sizinkileri döndürmeye çalıştığını kontrol edersiniz. Oradan git. – darvids0n
@ darvids0n teşekkürler. Gerçekten başka herhangi bir görüşün portre dışında bir şeyi desteklemesine izin vermek istemiyorum ama sanırım bir deneme yapacağım ve ne olduğunu göreceğim. – bennythemink
@ darvids0n Sorumu güncelledim. önerebileceğin bir şey var mı? Herhangi bir tavsiye için çok teşekkürler. – bennythemink