web-dev-qa-db-ja.com

iOS 13ビューを変更しないフレームを変更します

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))
         */
    }];
}
 _

}

12
ColinMasters

set .TranslateAutOresizingSizingMaskIntroconsItoConstraintsのviewsのviewsのviewのビューでは、それは私のために働きました。それが助けを願っています

3
Peter Nguyen

IOS13に移動するときは、同じ問題がありました。私の場合、サイジングの制約は、私がフレームに作っていた変更があったあらゆる変更を上書きしていました。これはiOS12の場合ではありませんでした。私のアプリが正しく機能するために、私は新しいフレーム座標がレイアウトの制約と互換性のあるままであるように、 "animateWithDuration"ブロックの直前にNSlayOutContraintを更新しなければなりませんでした。それが助けを願っています

3
Frank