-1

概要: ズーム可能なコンテンツを含む UIScrollView があります。コンテンツがズームされておらず、ViewController を提示している場合、その ViewController を閉じるとすべて問題ありません。しかし、コンテンツをズームしてから presentViewController を表示すると、ViewController を閉じると、コンテンツと UIScrollView がすべて奇抜になります。どんな助けでも大歓迎です、これはひどいバグです...ありがとう!

テスト プロジェクト: 簡単なテストはここにあります...

http://twostatesaway.com/ModalWithScrollViewTEST.zip

またはここ

https://drive.google.com/file/d/0B0pG5vRVzBTzdkVzdEtkdmVjdDA/edit?usp=sharing

スクリーンショット:

画面 1: すべて正常です。モーダルを100万回表示でき、モーダルを閉じた後、コンテンツは期待どおりに機能します

画面 2: コンテンツを拡大します。

画面 3: ボタンをクリックして presentViewController を表示すると、ViewController (黒) が表示されるので、コンテンツが右に移動します。

画面 4: モーダルが画面に表示されます。

画面 5: ViewConroller を閉じると、コンテンツがおかしいです。明るい緑色のビューが通常に戻ったように見えますが、ボタンはズーム位置のままで、まだ右にずれています。

画面 6: もう 1 つの面白い点は、以前よりズームアウトできるようになったことです。最小ズームは 1.0 に設定されていますが、現在は機能していないようです。

ここに画像の説明を入力

4

2 に答える 2

0

この方法を試してみてください...

1) コードを削除し- (IBAction)openModal:(id)sender て空白にします。

2) ストーリー ボードで、次のように secondViewController クラスを作成ModalViewControllerします。

ここに画像の説明を入力

3) ボタンから 2 番目のビューに線をドラッグし、以下に示すようにセグエをモーダルとして使用します。

ここに画像の説明を入力

更新された回答

1) メソッドをクリアしviewDidLoadます。

2) 以下のコードをViewWillAppear method.

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.scrollView.delegate = self;
    self.scrollView.minimumZoomScale = 1.0;
    self.scrollView.maximumZoomScale = 5.0;
    //self.scrollView.contentSize=CGSizeMake(320, 200);
    [self.scrollView setZoomScale:self.scrollView.minimumZoomScale];
}
于 2013-10-29T10:35:43.893 に答える
0

ここで受け入れられている作業は、モーダルが表示されるときにズームと contentOffset をキャプチャし、ビューが再び表示されるときにプロパティを設定することです...

//// Capture values
-(void)viewWillDisappear:(BOOL)animated
{
    zoomedScale = self.scrollView.zoomScale;
    contentOffsetTemp = self.scrollView.contentOffset;
}

//// This prevents the content from getting messed up (thanks user1673099)
-(void)viewDidDisappear:(BOOL)animated
{
    [self.scrollView setZoomScale:self.scrollView.minimumZoomScale];
}

//// Then reassign them values
-(void)viewWillAppear:(BOOL)animated
{   
    self.scrollView.zoomScale = zoomedScale;
    self.scrollView.contentOffset = contentOffsetTemp;
}
于 2013-12-10T07:59:34.597 に答える