IOS 13シミュレータのXcode 10でコンパイルされているアプリがあります。あるビューでは、タップされたときに下から表示される「トレイ」ビューがあります.IOS12では完璧に機能します.IOS 13では、タップはメソッドを呼び出していますが、フレームへの変更は保存されていません - 出力が含まれていますコメントのデバッガから、フレーム値の出力が何であるかを確認できます。
- (void) userClickActivityTray: (UITapGestureRecognizer *) gestureRecognizer {
if(self.activityTrayShown) {
/*
(lldb) po self.activityTrayContainerView.frame
(Origin = (x = 0, y = 792), size = (width = 414, height = 104))
*/
[self hideActivityTray];
} else {
if (!self.activityTrayViewInitialFrameComputed) {
self.activityTrayViewInitialFrameComputed = YES;
self.activityTrayInitialFrame = self.activityTrayContainerView.frame;
}
/*
(lldb) po self.activityTrayContainerView.frame
(Origin = (x = 0, y = 638), size = (width = 414, height = 224))
(Origin = (x = 0, y = 638), size = (width = 414, height = 224))
(lldb) po self.activityTrayInitialFrame
(Origin = (x = 0, y = 792), size = (width = 414, height = 104))
(Origin = (x = 0, y = 792), size = (width = 414, height = 104))
(lldb)
*/
[UIView animateWithDuration:0.25 animations:^{
self.activityTrayContainerView.frame = CGRectMake(self.view.bounds.Origin.x,
self.bottomView.frame.Origin.y - self.activityTrayViewController.maximumHeight,
self.view.bounds.size.width,
self.activityTrayViewController.maximumHeight);
self.activityTrayBackgroundView.alpha = 1.0;
self.bottomView.alpha = self.dotsProgressView.alpha = 0;
} completion:^(BOOL finished) {
self.activityTrayShown = YES;
/*
(lldb) po self.activityTrayContainerView.frame
(Origin = (x = 0, y = 557), size = (width = 414, height = 305))
(Origin = (x = 0, y = 792), size = (width = 414, height = 104))
*/
}];
}
_
}
set .TranslateAutOresizingSizingMaskIntroconsItoConstraintsのviewsのviewsのviewのビューでは、それは私のために働きました。それが助けを願っています
IOS13に移動するときは、同じ問題がありました。私の場合、サイジングの制約は、私がフレームに作っていた変更があったあらゆる変更を上書きしていました。これはiOS12の場合ではありませんでした。私のアプリが正しく機能するために、私は新しいフレーム座標がレイアウトの制約と互換性のあるままであるように、 "animateWithDuration"ブロックの直前にNSlayOutContraintを更新しなければなりませんでした。それが助けを願っています