iOS 11の後で、カスタムフリップカードトランジションが正常に動作しないアプリケーションに取り組んでいます。下のGIF(故意に遅いアニメーション)を見ると、カードがリターンフリップに正しく配置されていないことがわかり、その後、「クリック」して配置されます。 iOS 10以降ではこれは発生しません。クリックせずに元の場所に戻ります。iOS11スクロールオフセット - トランジションに関する問題
私は新しい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%ではありません。
私はカスタムトランジションをチェックします。ターゲットの矩形はどのように計算されますか? –
ヒントをありがとう。ビューの中心が決まっているところを見て、そこではiOS 11の中心点を64ポイント上に移動しました。 – Jay
私は現在、iPhone Xの奇妙なcontentOffset値と戦っています。私は64を期待していますが、88を取得しています。これはiPhone Xのステータスバーの高さと関係があるのだろうか。iPhone 7ではステータスバーの高さは20で、iPhone Xではステータスバーの高さは44です(44-20 = 24と88-64 = 24 ) – Rob