Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
iOS11滚动偏移-转换问题_Ios_Objective C_Animation_Ios11 - Fatal编程技术网

iOS11滚动偏移-转换问题

iOS11滚动偏移-转换问题,ios,objective-c,animation,ios11,Ios,Objective C,Animation,Ios11,我正在开发一个应用程序,在iOS 11之后,自定义翻转卡转换无法正常工作。如果你看下面的GIF(故意减慢动画),你会发现卡没有正确地放在回程翻转上,然后“点击”到位。在iOS 10及以下版本中,这种情况不会发生。它将返回到其原始位置,而无需单击 我已经研究了新的ContentInsetAdjustmentBehavior,并将其设置为。永不回避卡片和顶部状态栏之间的空间。然而,这并没有解决问题 if (@available(iOS 11.0, *)) { self.scrollView

我正在开发一个应用程序,在iOS 11之后,自定义翻转卡转换无法正常工作。如果你看下面的GIF(故意减慢动画),你会发现卡没有正确地放在回程翻转上,然后“点击”到位。在iOS 10及以下版本中,这种情况不会发生。它将返回到其原始位置,而无需单击

我已经研究了新的ContentInsetAdjustmentBehavior,并将其设置为。永不回避卡片和顶部状态栏之间的空间。然而,这并没有解决问题

if (@available(iOS 11.0, *)) {
    self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    self.navigationController.navigationBar.prefersLargeTitles = NO;
    self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
}
有人知道我应该在哪里解决这个问题吗

更新HACK

我看了过渡段,以及过渡段的中心位置。在这里,我对iOS 11做了一个小改动,将iPhone8+及以下版本的中心点移动了64点,iPhoneX的中心点移动了88点。但只有在我还没有开始滚动的时候。如果我滚动,所有iPhone型号的中心都移动了44个点。见下面的临时解决方案:

CGPoint targetCenterInContainer = CGPointMake(CGRectGetMidX(newCardFrame), CGRectGetMidY(newCardFrame));

if (@available(iOS 11.0, *)) {

    double offset = newCardFrame.origin.y - originalCardFrame.origin.y;

    if (offset == 64) {
        targetCenterInContainer.y -= 64; // For iPhone 8 Plus and below, with no scroll offset
    } else if (offset == 88) {
        targetCenterInContainer.y -= 88; // For iPhone X, with no scroll offset
    } else {
        targetCenterInContainer.y -= 44; // For when there are scroll offset, all iPhones
    }
}

这可以正常工作,但不是100%。

我的应用程序中的所有动画都面临类似的问题,过渡后的一些组件放错了位置,所以我建议只禁用ios 11版本的动画,我的意思是将动画值设为false,直到苹果解决所有这些问题。

我会检查自定义过渡。目标rect是如何计算的?谢谢你的提示。查看视图中心的确定位置,我将iOS 11的中心向上移动了64个点。我目前正在与iPhone X上的一个奇怪的contentOffset值作斗争。我预期为64,但得到了88。我想知道这是否与iPhone X上的状态栏高度有关。在iPhone 7上,状态栏高度是20,在iPhone X上,状态栏高度是44。(44-20=24和88-64=24)