2017-10-02 10 views
2

iOS 11の後で、カスタムフリップカードトランジションが正常に動作しないアプリケーションに取り組んでいます。下のGIF(故意に遅いアニメーション)を見ると、カードがリターンフリップに正しく配置されていないことがわかり、その後、「クリック」して配置されます。 iOS 10以降ではこれは発生しません。クリックせずに元の場所に戻ります。iOS11スクロールオフセット - トランジションに関する問題

GIF of animation

私は新しいcontentInsetAdjustmentBehaviourに見て、一番上のカードとステータスバーの間のスペースを避けるために.neverするために、これを設定しています。しかし、これは問題を解決しませんでした。

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

この問題を解決するにはどうすればいいですか?

UPDATE HACK

Iは、遷移と場所遷移の中心が決定される見ました。ここで私は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%ではありません。

+0

私はカスタムトランジションをチェックします。ターゲットの矩形はどのように計算されますか? –

+0

ヒントをありがとう。ビューの中心が決まっているところを見て、そこではiOS 11の中心点を64ポイント上に移動しました。 – Jay

+0

私は現在、iPhone Xの奇妙なcontentOffset値と戦っています。私は64を期待していますが、88を取得しています。これはiPhone Xのステータスバーの高さと関係があるのだろうか。iPhone 7ではステータスバーの高さは20で、iPhone Xではステータスバーの高さは44です(44-20 = 24と88-64 = 24 ) – Rob

答えて

0

私は、アプリからのすべてのアニメーションで同様の問題に直面しています。移行後の一部のコンポーネントが正しく配置されていないので、私の推奨では、iOS 11バージョンのアニメーションを無効にしています。

関連する問題