-1

摘要: 我有一个带有可缩放内容的 UIScrollView。如果内容没有缩放并且我展示了 ViewController,那么当我关闭该 ViewController 时一切都很好。但是,如果我缩放了内容然后呈现ViewController,那么当我关闭ViewController 时,内容和UIScrollView 都会变得古怪。欢迎任何帮助,这是一个可怕的错误......谢谢!

测试项目: 可以在这里找到一个简单的测试...

http://twostatesaway.com/ModalWithScrollViewTEST.zip

或在这里

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

屏幕截图:

屏幕 1:一切正常。我可以将模态显示一百万次,并且在关闭模态后内容将按预期工作

屏幕 2:放大内容。

屏幕 3:当我单击显示 ViewController 的按钮时,随着 ViewController(黑色)的出现,内容向右移动。

屏幕 4:模态显示在屏幕上。

屏幕 5:当我关闭 ViewConroller 时,内容很有趣,明亮的绿色视图似乎恢复正常,但按钮保持在其缩放位置,仍然向右移动。

屏幕 6:另一个有趣的事情是,现在我可以比以前缩小更多。最小缩放设置为 1.0,但现在看来这不起作用。

在此处输入图像描述

4

2 回答 2

0

试试这个方法...

1)从中删除代码- (IBAction)openModal:(id)sender 并将其留空。

2)在故事板中制作 secondViewController 类,ModalViewController如下所示。

在此处输入图像描述

3)将线从按钮拖到第二个视图并使用segue作为模态,如下所示。

在此处输入图像描述

更新的答案

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 回答