OGeek|极客世界-中国程序员成长平台

标题: iOS11 滚动偏移 - 过渡问题 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 18:52
标题: iOS11 滚动偏移 - 过渡问题

我正在开发一个应用程序,在 iOS 11 之后,自定义翻转卡转换无法正常工作。如果您查看下面的 GIF(故意放慢动画),您会看到卡片未正确放置在返回翻转上,然后“点击”到位。对于 iOS 10 及更低版本,这不会发生。无需点击即可返回到原来的位置。

GIF of animation

我查看了新的 contentInsetAdjustmentBehaviour 并将其设置为 .never 以避免卡片和顶部状态栏之间的空间。然而这并没有解决问题。

if (@available(iOS 11.0, *)) {
    self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    self.navigationController.navigationBar.prefersLargeTitles = NO;
    self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
}

有人知道我应该从哪里解决这个问题吗?

更新技巧

我查看了过渡以及确定过渡中心的位置。在这里,我为 iOS 11 做了一个小技巧,将 iPhone 8+ 及以下版本的中心移动了 64 点,iPhone X 移动了 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%。



Best Answer-推荐答案


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

关于iOS11 滚动偏移 - 过渡问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525077/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4