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