在iPhone 4/3GS的iOS4中,我有一个表视图,其中一个单元格播放了一个电影文件。如果影片播放完毕,并且控件消失,视图将回到状态栏下。就像在这个image...that中,我太新了,不能发帖。看这里..。
http://www.dezignwright.com/ios4_movie.png
如果在影片结束时控制处于打开状态,则不会出现问题。
奖励:当电影播放器开始播放时,我如何强制它进入景观。我根本不想让它出现在肖像里。
谢谢。
发布于 2011-04-21 08:06:02
@Nuoji已经接近正确答案了。当MPMoviePlayerViewController关闭时,iOS正在对有问题的视图的帧进行动画处理。由于iOS中的一个错误,当回放自动结束时(当电影结束时),动画假定所讨论的视图占据了整个屏幕,而不是全屏。
步骤1.保存包含将启动MPMoviePlayerViewController的视图的superview的帧。
步骤2.为playbackDidFinishNotification附加监听程序
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];步骤3.在通知处理程序中,将帧重置为原始帧,但会延迟一段时间,以允许动画完成。如果在动画过程中修改了帧,则不会产生任何效果。
[self performSelector:@selector(resetFrame)
withObject:nil
afterDelay:kResetFrameDelay];
- (void)resetFrame {
self.view.frame = kApplicationFrame;
}发布于 2011-04-21 20:25:53
此问题已得到解决,从iOS 4.3开始不再是问题。
感谢大家的投入。
发布于 2010-07-28 20:15:14
这似乎是4.0中的一个错误,当使用“完成”按钮退出时,它可以正常工作。
我使用的解决方法是手动存储帧,然后在接收MPMoviePlayerPlaybackDidFinishNotification时恢复它。
最后,要使其处于横向模式,请使用覆盖shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation的MPMoviePlayerViewController的子类
例如,类似于以下内容:
@interface CustomMoviePlayerViewController : MPMoviePlayerViewController
@end
@implementation CustomMoviePlayerViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft;
}
@end并在你的控制器中解决这个bug:
- (void)playbackEnded:(NSNotification *)notification
{
[[self view] setFrame:[self originalFrame]];
}
- (void)playMovie:(NSString *)movieURLString
{
MPMoviePlayerViewController *controller = [[CustomMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:movieURLString]];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackEnded:) name:MPMoviePlayerPlaybackDidFinishNotification object:[controller moviePlayer]];
[self presentMoviePlayerViewControllerAnimated:controller];
}https://stackoverflow.com/questions/3310909
复制相似问题