【发布时间】:2013-03-06 01:32:35
【问题描述】:
这是一个多方面的问题,可以帮助那些使用 Core Plot 的人,或者那些在以模态方式呈现 UIViewController 时遇到问题的人,然后尝试将其作为子视图添加到较小的 UIView。
我已将核心绘图图 (corePlotView) 添加到 500x350 UIView (myView) 中,并成功地使用长按“模态”地呈现它:
-(void)press:(UILongPressGestureRecognizer*)gesture {
if(gesture.state == UIGestureRecognizerStateEnded)
{
corePlotView.closeBtn.hidden = NO;
corePlotView.iPadCV = self;
[corePlotView loadFullGraph];
[ipadDelegate.detailViewController presentViewController:corePlotView animated:NO completion:nil];
}
}
这是一种使全屏图形出现并在 iPad 旋转时仍然调整图形大小的简单方法(非常重要)。当用户点击“closeBtn”时,会从 corePlotView 向dismissModalViewController 发送一条消息...
-(IBAction)close:(id)sender {
self.closeBtn.hidden = YES;
ipadDelegate = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
[ipadDelegate.detailViewController dismissViewControllerAnimated:NO completion:nil];
[iPadCV reloadOriginalGraph];
}
...然后 reloadOriginalGraph 维护用户在呈现之前拥有的所有绘图和数据(重要),然后将视图大小调整回其原始框架,如下所示:
-(void)reloadOriginalGraph {
[corePlotView.view setFrame:myView.bounds];
[corePlotView loadOriginalGraph];
[myView addSubview:corePlotView.view];
[myView sendSubviewToBack:corePlotView.view];
}
[corePlotView loadOriginalGraph] 和 [corePlotView loadFullGraph] 正在调用将所有文本大小和填充类型属性从原始设置切换到全屏设置的方法...不是问题。
问题是当图形成功缩小到 500x350 时,一旦 iPad 旋转,corePlotView 就会重新调整到模态视图的框架。显然,这不是我想要的,因为需要以某种方式维护或限制 500x350。
有没有人在呈现模态然后使用 addSubview 时遇到这个问题?此方法在 ARC 有机会将其删除之前使视图保持在堆栈中,但似乎模态的某些属性保持不变。有没有办法从 UIViewController 中去除这种“模态”?
有没有更简单的方法可以使用手势将 Core Plot 图形设置为全屏并再次返回(似乎捏手势未在 corePlotView 上注册,这就是我使用长按的原因)?
【问题讨论】:
-
听起来 VC 并非设计为这样做(即使是这样,您也应该在以模态方式呈现之前将其作为 VC 的子级删除,然后将其添加为子级;您可能还想检查自动调整大小的掩码)。将其呈现为新的控制器。
-
我尝试了许多不同的方法来呈现一个新的 VC 或将 corePlotView 分配给 corePlotViewCopy 类型的实例,或者在 IB 中创建一个新的 VC,删除 corePlotView.view 并将其添加到呈现的 IB VC ,然后将其删除并重新添加...但是一旦 iPad 旋转,即使 shouldAutorotate = YES 并且supportedInterfaceOrientations 返回 UIInterfaceOrientationMaskAll,Core Plot VC 也会保留模态框...
-
我应该补充一点,一旦读取了 VC,autoresizingMask = UIViewAutoresizingNone 确实是我想要的,因为父 UIView 和子核心绘图 VC 的大小需要保持 500x300,但它不起作用...然而,最重要的事情似乎是当我在旋转后加载一个全新的实例时应用程序崩溃(例如,用户单击 rootViewController 中的一个单元格以查看完全不同的图形),这可能会给你们一个线索我做错了什么。
标签: ios ipad uiview uiviewcontroller core-plot