ios - 戻る - swift navigation controller




UINavigationControllerのpushおよびpopの後にジャンプするUIScrollViewの子 (2)

ビューが表示されるたびに、サブビューのフレームを取得してから手動でサブビューのフレームをリセットします。 - (void)viewWillAppear:(BOOL)animated。

-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
globalFrameVariable = subview.frame;
[subview removeFromSuperview];
}

-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[subview setFrame:globalFrameVariable];
[scrollView addSubview:subview];
}

だから私は1つの子ビュー(それはすべてのコントロールの親です)と私のiPadのアプリにUIScrollViewを持っています。 スクロールはすべて正常に動作します。 回転がうまくいきます(全体の画像が縦長で、横向きでスクロールします)。 UINavigationControllerで新しい画面をプッシュした後に戻ってくると、それが中断されます。

スクロールビューの子フレームがスクロール位置に対して上に移動したように見えますが、スクロールビューは下に残ります(子ビュー全体が上に移動しています)。

私はストーリーボードのConstraintsと文字通り数時間戦ってみましたが、これを引き起こす可能性のあるものは解決できません。


私はスクロールビューと自動レイアウト(iOS 6 - 動作しません、iOS 7 - うまく動作します)と同じ問題を抱えていましたが、もちろんこれは完璧な解決策ではありませんが、うまくいくようです。 それがあなたを助けることを願っています:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self performSelector:@selector(content) withObject:nil afterDelay:0.0];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    offset = self.scrollView.contentOffset;
}

- (void)viewDidDisappear:(BOOL)animated
{
   [super viewDidDisappear:animated];

   self.scrollView.contentOffset = CGPointZero;
}

- (void)content
{
    [self.scrollView setContentOffset:offset animated:NO];
}




xcode-storyboard