要点: 我有一个带可缩放内容的UIScrollView。如果内容没有被缩放并且我现在是ViewController,那么当我解雇ViewController时一切都很好。但是,如果我缩放内容然后presentViewController,当我解除ViewController时,内容和UIScrollView都是古怪的。欢迎任何帮助,这是一个可怕的错误......谢谢!
测试项目: 这里可以找到一个简单的测试......
http://twostatesaway.com/ModalWithScrollViewTEST.zip
或在这里
https://drive.google.com/file/d/0B0pG5vRVzBTzdkVzdEtkdmVjdDA/edit?usp=sharing
屏幕截图:
屏幕1:一切都很好。我可以显示模式一百万次,内容将在解除模态后按预期工作
屏幕2:放大内容。
屏幕3:当我点击presentViewController的按钮时,内容会在ViewController(黑色)出现时向右移动。
屏幕4:模态在屏幕上。
屏幕5:当我关闭ViewConroller时,内容很有趣,亮绿色视图似乎恢复正常,但按钮保持在变焦位置,仍然向右移动。
屏幕6:另一个有趣的事情是,现在我可以比以前更多地缩小。最小缩放设置为1.0,但现在看来它似乎不起作用。
答案 0 :(得分: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];
}
答案 1 :(得分: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;
}