java 转换模态_UIViewController和旋转的模态表示

所以我的问题看起来像这样:

这是表示视图控制器的方法:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

if((toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft

|| toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) && self.interfaceShouldRotate) {

if(self.videoFullscreen == nil) {

self.videoFullscreen = [self.storyboard instantiateViewControllerWithIdentifier:videoFullscreenController];

self.videoFullscreen.delegate = self;

}

[self.videoFullscreen setVideoView:self.matchVideoView.containerViewForVideo];

[UIApplication sharedApplication].statusBarHidden = YES;

[self presentViewController:self.videoFullscreen animated:YES completion:nil];

}

}

我的想法是通过呈现 UIViewController 以横向模式呈现视频播放器,并使用视频播放器视图在此控制器中设置视图:

- (void)setVideoView:(UIView *)videoView {

NSParameterAssert(videoView);

_videoView = videoView;

[self.view addSubview:_videoView];

_videoView.translatesAutoresizingMaskIntoConstraints = NO;

NSDictionary *views = @{@"video":_videoView};

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[video]|"

options:0

metrics:nil

views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[video]|"

options:0

metrics:nil

views:views]];

}

这是委托方法,通知根视图控制器它将被解雇,并且视频播放器应该以纵向方向再次嵌入 .

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

if(toInterfaceOrientation == UIInterfaceOrientationPortrait

|| toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {

[self.delegate fullscreenViewControllerdidRotateToPortrait:self];

}

}

委托方法执行此操作:

- (void) removeViewAndDismissFullscreenVideoController {

[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];

self.matchVideoView.containerViewForVideo = self.videoFullscreen.videoView;

[UIApplication sharedApplication].statusBarHidden = NO;

}

- (NSUInteger)supportedInterfaceOrientations 和 - (BOOL)shouldAutorotate 在自定义 UINavigationController 中设置 . . 应用程序仅在纵向模式下 . 播放视频时,通知开关支持 UIInterfaceOrientationMaskAll 的方向,用户可以使用嵌入的视频旋转屏幕 . 当设备旋转为横向时,视频播放器将移至全屏 .

那么问题出在哪里?在iOS 8上它运行良好,但在iOS 7中,当视频播放器控制器被解除时,带有嵌入式播放器的控制器保持横向模式,但只能查看因为 - (void)viewDidAppear:(BOOL)animated 当我检查 self.interfaceOrientation UIViewController 处于纵向模式时(视图是横向模式) . 一切都与Autolayout有关 . 任何想法如何找到问题的原因并解决它?

edit:

以下答案 . 它必须位于View Controller中,在子视图中嵌入了视频播放器,当在横向视频中移动视频控制器视图时 . 此外,这也不起作用 .

Solution:

我已经移动了代码进行纵向旋转,将全屏视频解除为didRotate(仅适用于iOS7)并进行自定义转换 . 那解决了问题 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值