Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用Obj-C的最新iOS版本中,如何确定更改后的设备旋转_Ios_Objective C_Xcode - Fatal编程技术网

在使用Obj-C的最新iOS版本中,如何确定更改后的设备旋转

在使用Obj-C的最新iOS版本中,如何确定更改后的设备旋转,ios,objective-c,xcode,Ios,Objective C,Xcode,我在一个只支持iPad的应用程序中安装了一个嵌入式web控制器,在设备旋转后需要更新网页以获得正确的视口大小。我目前正在使用一种不推荐的方法: didRotateFromInterfaceOrientation: 苹果的文档中说要使用更新的: viewWillTransitionToSize:withTransitionCoordinator: 我看到很多类似的问题,他们都指向这个新的方法 不幸的是,这种新方法发生在设备旋转之前。我需要知道设备旋转后什么时候发生旋转。如果我使用新方法,网页

我在一个只支持iPad的应用程序中安装了一个嵌入式web控制器,在设备旋转后需要更新网页以获得正确的视口大小。我目前正在使用一种不推荐的方法:

didRotateFromInterfaceOrientation:
苹果的文档中说要使用更新的:

viewWillTransitionToSize:withTransitionCoordinator: 
我看到很多类似的问题,他们都指向这个新的方法

不幸的是,这种新方法发生在设备旋转之前。我需要知道设备旋转后什么时候发生旋转。如果我使用新方法,网页会在方向改变之前更新,网页的大小也会变得不稳定

请不要建议将网页做得更好。我同意这应该发生,但这是我无法控制的。我需要处理这件事

如果没有旧的、不推荐的方法,我如何实现这一点

干杯!
TJ

您可以在ViewDidLayoutSubView中执行此操作。但在视图的生命周期中,此方法可能会被多次调用。可以使用具有视图当前宽度的可变viewWidth。如果viewDidlayoutSubviews中视图的宽度发生了更改,则可以断定布局发生了更改,需要重新加载视图

-(void) viewDidLayoutSubviews
{
     [super viewDidLayoutSubviews];


    if (viewWidth == 0)
    {
        viewWidth = self.view.bounds.size.width; // First time assign
        return;
    }

  if (viewWidth != self.view.bounds.size.width)
  {
    viewWidth = self.view.bounds.size.width; 
    // perform ur reload operation here.
  }
}

使用
协调器
为旋转“设置动画”,并收听
完成
回调。您可以将
nil
作为自定义动画参数:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    coordinator.animate(alongsideTransition: nil) { _ in
        print("Rotation finished")
    }
}
代码应该自我解释

编辑(ObjC):

-(void)视图将转换大小:(CGSize)带有转换协调器的大小:(id)协调器{
[coordinator AnimateLongsideTransition:nil completion:^(id_非空上下文){
NSLog(“旋转完成”);
}];
}

这是一个普通的视图控制器功能覆盖。你可以很容易地适应这个。我在答案中添加了ObjC代码,伙计!我在Obj-C中很少工作,在Swift中也没有。只是想让遗留应用程序保持活力。
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    [coordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {
        NSLog(@"Rotation finished");
    }];
}