1、MPMoviePlayerController使statusBar消失
同事写项目时,运行程序总导致statusBar状态条消失,然后就是界面会上移20个像素,导致最下面空白界面,找原因一直不知道什么导致的。然后请教老同事找到是播放视频的时候导致的,看项目中用到了MPMoviePlayerController,认为就是这个导致的bug。再然后,项目中用到了好多要播放音频的,只播放音频而不出现画面,添加了好多MPMoviePlayerController后,每次播放都会频繁的导致statusBar消失,所以就认为肯定是以及一定是MPMoviePlayerController导致的状态条消失。
代码如下:
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; moviePlayer.controlStyle = MPMovieControlStyleFullscreen; [moviePlayer play]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
因为播放的视频控制器MPMoviePlayerController的controllerStyle设置成了MPMoviePlayerControllerStyleFullScreen,这种模式下程序会默认隐藏StatusBar,而同一APP只有一个StatusBar,当播放视频时如果StatusBar被隐藏,而在视频播放完之后没有将setStatusBarHidden设置为NO的话,则不论你回到程序中的哪个界面,StatusBar都是被隐藏的。第一种情况是由于APP的viewController采用的是相对StatusBar的布局方式,当StausBar被隐藏后,其原点和高度都相应改变,当你手动让StatusBar显示之后,要同时调整viewController的frame.
参考: 点击打开链接
2、MPMoviePlayerController导致内存泄露leak
参考:
http://www.cocoachina.com/bbs/simple/?t90818.html
http://stackoverflow.com/questions/3384388/mpmovieplayercontroller-still-leaking
两句话:
谁申请谁释放的经典哲学原则
真机测试的为标准