[cập nhật]iPhone không thể xoay phim sang chế độ phong cảnh sử dụng MPMoviePlayerViewController
Như đã đề nghị tôi đã thay đổi tất cả các bộ điều khiển xem cha mẹ để hỗ trợ tất cả định hướng. Cấu trúc ứng dụng của tôi như sau: AppDelegate> RootViewController> Video> VideoDetails> MPMoviePlayerViewController.
Video sẽ phát ở chế độ ngang nếu tôi thay đổi tất cả những thứ này để hỗ trợ tất cả các hướng. Nhưng hỗ trợ tất cả các định hướng không phải là những gì tôi muốn và gây ra các vấn đề khác. Có công việc nào khác xung quanh hay bất cứ thứ gì khác tôi có thể làm không?
Cảm ơn
[/ cập nhật]
Tôi có một chân dung dựa ứng dụng iPhone có hiển thị video sử dụng một lớp con tùy chỉnh của MPMoviePlayerViewController. Khi người dùng nhấn play để tạo một thể hiện của lớp này và trình bày nó modally như sau:
- (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];
}
Vấn đề là nó đóng tiền phạt trong bức chân dung nhưng khi tôi xoay iPhone để cảnh video vẫn đóng trong bức chân dung và không cảnh :(Tất cả các bộ điều khiển xem trong ứng dụng chỉ hỗ trợ hướng dọc
My MPMoviePlayerViewController lớp con chỉ ghi đè các phương pháp sau đây để cho phép thay đổi hướng nhưng nó đã không ảnh hưởng đến:.
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
tôi đã thậm chí đã cố gắng xoay video theo chương trình nhưng hoàn toàn không có may mắn, video luôn ở chế độ dọc.
- (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;
}
Hỗ trợ xoay vòng * là loại * heirarchical. Vì vậy, nếu bạn đang trình bày một bộ điều khiển trình phát phim và nó không cho phép bạn xoay, bước gỡ lỗi đầu tiên của tôi sẽ là kiểm tra bộ điều khiển xem MỌI dẫn đến trình phát phim của bạn cho phương thức 'shouldAutorotate..' và làm cho nó chỉ trả về CÓ; '(bạn có thể làm điều này tăng dần nếu bạn muốn tiết kiệm thêm rắc rối sau này).Sau đó, chuyển đổi chúng một lần trở lại chân dung cho đến khi nó khóa chân dung, và bạn biết cái nào mà UIKit' đang kiểm tra khi cố xoay vòng của bạn. Đi từ đó. – darvids0n
@ darvids0n cảm ơn. Tôi không thực sự muốn để bất kỳ hỗ trợ xem nào khác ngoài bức chân dung nhưng tôi đoán tôi sẽ thử và xem điều gì sẽ xảy ra. – bennythemink
@ darvids0n Tôi đã cập nhật câu hỏi của mình. có bất cứ điều gì bạn có thể đề nghị? Cảm ơn rât nhiêu vi lơi khuyên. – bennythemink