iOS中子视图控制器方向更改时如何旋转父视图控制器

交换-IOS-Android

我正在使用以下方法在父视图控制器上显示子视图控制器

childView1 *viewController = [[childView1 alloc]initWithNibName:examTFVC_NIB bundle:nil row:gesture.view.tag productID:test_productID size:testsize Duration:duration];
            self.modalPresentationStyle = UIModalPresentationCurrentContext;
            self.view.alpha = 0.4f;
            viewController.view.backgroundColor = [UIColor clearColor];
            viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
            [self presentViewController:viewController animated:YES completion:NULL];  

我仅在父视图控制器及其横向上显示透明视图控制器。但是问题是,当我从子视图控制器的方向更改将设备从左横向更改为从右横向或从右向左更改时,父视图控制器仍保持相同的方向。

当我不显示子级视图控制器时,我的父级视图控制器方向会发生变化,如何与子级一起更改父级视图控制器的方向?

我试图通过编程将通知中心从子级传递到父级来更改方向来更改方向。

在子视图控制器中

- (NSUInteger)supportedInterfaceOrientations
 {
NSUInteger supportedOrientations = UIInterfaceOrientationMaskLandscape;
[[NSNotificationCenter defaultCenter] postNotificationName:@"RotateParent"object:nil];

return supportedOrientations;
 }
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight );
 }
 - (BOOL)shouldAutorotate
{

return YES;
}

在父视图控制器中

-(void)rotateParent:(NSNotification *)notification
{
CGAffineTransform transform = CGAffineTransformMakeRotation(-M_PI);
self.view.transform = transform;
NSLog(@"Parent rotate ");
 }

但是,当我单击以在父视图上显示我的孩子时,默认情况下将执行我的“ rotateParent”方法一次。还有其他解决方案吗?

普拉萨德

对于<iOS 6.0

在childView1中

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

 [[NSNotificationCenter defaultCenter] postNotificationName:@"RotateParent"object:nil];
 return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||interfaceOrientation == UIInterfaceOrientationLandscapeRight );

 }

对于> iOS 6.0

 - (BOOL)shouldAutorotate
 {
      [[NSNotificationCenter defaultCenter] postNotificationName:@"RotateParent" object:nil];
      return YES;
  }

在父视图中

添加观察者以进行通知,并基于当前方向以适当的角度旋转父视图。

-(void)rotateParent:(NSNotification *)note{

 UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
 CGFloat rotationAngle = 0;

 if (orientation == UIDeviceOrientationPortraitUpsideDown) rotationAngle = M_PI;
 else if (orientation == UIDeviceOrientationLandscapeLeft) rotationAngle = M_PI_2;
 else if (orientation == UIDeviceOrientationLandscapeRight) rotationAngle = -M_PI_2;

 [UIView animateWithDuration:0.5 animations:^{
    self.view.transform = CGAffineTransformMakeRotation(rotationAngle);
    self.view.transform = CGAffineTransformMakeRotation(rotationAngle);
    self.view.transform = CGAffineTransformMakeRotation(rotationAngle);
 } completion:nil];

//adjust view frame based on screen size

 if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
 {
     self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
 }
 else
 {
    self.view.bounds = CGRectMake(0.0, 0.0, 320, 480);
 }
}

让我知道您是否遇到任何问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

子视图控制器旋转而父视图控制器不旋转

来自分类Dev

屏幕方向更改时,可以在以前的视图控制器上转换视图吗?

来自分类Dev

屏幕方向更改时,可以在以前的视图控制器上转换视图吗?

来自分类Dev

更改视图控制器

来自分类Dev

iOS视图控制器包含| 子视图控制器将触摸传递给父视图控制器

来自分类Dev

关闭模态视图控制器后如何更新父视图控制器的视图

来自分类Dev

控制器更改时,视图(模板)不会更新

来自分类Dev

iOS-具有对父视图控制器的“强大”引用的子视图控制器

来自分类Dev

关闭模态视图控制器时如何保持呈现视图控制器的方向?

来自分类Dev

Xamarin iOS 防止特定视图控制器的旋转

来自分类Dev

某些视图控制器的固定方向

来自分类Dev

强制视图控制器的方向

来自分类Dev

视图控制器之间的过渡方向

来自分类Dev

父视图不反映子控制器的更改

来自分类Dev

访问父视图控制器

来自分类Dev

iOS-不同视图控制器的不同屏幕方向

来自分类Dev

如何从当前视图控制器更改前一个视图控制器的颜色?

来自分类Dev

如何在UINavigationController中正确旋转视图控制器?

来自分类Dev

如何在导航控制器层次结构中限制iOS7中每个视图控制器的方向

来自分类Dev

如何禁用导航控制器(Swift)中特定视图控制器的自动旋转?

来自分类Dev

iOS - 如何通过子容器设置父视图控制器的图像视图?

来自分类Dev

iOS 7:如何用表格视图控制器替换标准视图控制器

来自分类Dev

如何引用子类的父视图控制器?

来自分类Dev

如何选择正确的父视图控制器

来自分类Dev

如何引用子类的父视图控制器?

来自分类Dev

iOS:更改方向后弹出视图控制器时,约束会中断

来自分类Dev

iOS 5.1 Xcode 5子视图控制器方向未更改

来自分类Dev

xcode更改视图控制器问题

来自分类Dev

更改根视图控制器

Related 相关文章

  1. 1

    子视图控制器旋转而父视图控制器不旋转

  2. 2

    屏幕方向更改时,可以在以前的视图控制器上转换视图吗?

  3. 3

    屏幕方向更改时,可以在以前的视图控制器上转换视图吗?

  4. 4

    更改视图控制器

  5. 5

    iOS视图控制器包含| 子视图控制器将触摸传递给父视图控制器

  6. 6

    关闭模态视图控制器后如何更新父视图控制器的视图

  7. 7

    控制器更改时,视图(模板)不会更新

  8. 8

    iOS-具有对父视图控制器的“强大”引用的子视图控制器

  9. 9

    关闭模态视图控制器时如何保持呈现视图控制器的方向?

  10. 10

    Xamarin iOS 防止特定视图控制器的旋转

  11. 11

    某些视图控制器的固定方向

  12. 12

    强制视图控制器的方向

  13. 13

    视图控制器之间的过渡方向

  14. 14

    父视图不反映子控制器的更改

  15. 15

    访问父视图控制器

  16. 16

    iOS-不同视图控制器的不同屏幕方向

  17. 17

    如何从当前视图控制器更改前一个视图控制器的颜色?

  18. 18

    如何在UINavigationController中正确旋转视图控制器?

  19. 19

    如何在导航控制器层次结构中限制iOS7中每个视图控制器的方向

  20. 20

    如何禁用导航控制器(Swift)中特定视图控制器的自动旋转?

  21. 21

    iOS - 如何通过子容器设置父视图控制器的图像视图?

  22. 22

    iOS 7:如何用表格视图控制器替换标准视图控制器

  23. 23

    如何引用子类的父视图控制器?

  24. 24

    如何选择正确的父视图控制器

  25. 25

    如何引用子类的父视图控制器?

  26. 26

    iOS:更改方向后弹出视图控制器时,约束会中断

  27. 27

    iOS 5.1 Xcode 5子视图控制器方向未更改

  28. 28

    xcode更改视图控制器问题

  29. 29

    更改根视图控制器

热门标签

归档