首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS8 MGSplitViewController替代方案

iOS8 MGSplitViewController替代方案
EN

Stack Overflow用户
提问于 2014-08-11 15:00:35
回答 2查看 1.8K关注 0票数 10

我在我的应用程序中使用MGSplitViewController库。直到UIPopoverController iOS7,它才能正常工作,但是对于 iOS8 来说,它并没有像预期的那样工作,因为在iOS8中的行为发生了变化。附件是在MGSplitView上运行iOS8代码的屏幕截图:

这表明了错误的行为。它应该类似于以下截图:

我在某个地方读到,MGSplitViewController库不会为iOS8 fixes.Does进行更新,任何人都知道,如果我们有另一个库,它也适用于iOS8,并且具有与MGSplitViewController类似的特性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-25 14:26:37

我也面临着同样的问题,并找到了解决办法。转到MGSplitViewController.m并在-splitViewSizeForOrientation:中找到以下行(围绕第261行):

代码语言:javascript
复制
width = height;
height = fullScreenRect.size.width;

确保它不会在iOS 8上运行,因为iOS 8将正确处理大小。也许像这样。

代码语言:javascript
复制
if (SYSTEM_VERSION_LESS_THAN(@"8.0") && UIInterfaceOrientationIsLandscape(theOrientation)) {
    width = height;
    height = fullScreenRect.size.width;
}

然后在-reconfigureForMasterInPopover:中找到以下行(围绕第614行):

代码语言:javascript
复制
[_hiddenPopoverController presentPopoverFromRect:CGRectMake(-2000, -2000, 1, 1) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO];

并确保它不会在iOS 8上运行。同样,也许是这样。

代码语言:javascript
复制
if (SYSTEM_VERSION_LESS_THAN(@"8.0")) {
    [_hiddenPopoverController presentPopoverFromRect:CGRectMake(-2000, -2000, 1, 1) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO];
}
票数 17
EN

Stack Overflow用户

发布于 2014-09-13 10:32:50

我已经修改了MGSplitViewController以处理过去的问题,因此这可能不会完全解决您的问题,因为控制器副本中的其他修复可能会对解决方案有所贡献。

问题是,UIPopoverViewController (用于MGSplitViewController中的_hiddenPopoverViewController )在调用willAnimateRotationToInterfaceOrientation之后调用masterViewController上的视图removeFromSuperview。为了使我的应用程序再次发挥功能,我现在的修复方法是修改MGSplitViewController didRotateFromInterfaceOrientation:如下所示:

代码语言:javascript
复制
 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
 {
    [self.masterViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    [self.detailViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    if([[[UIDevice currentDevice] systemVersion] hasPrefix:@"8"])        {
        [self layoutSubviewsForInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation withAnimation:YES];
    }
}

不幸的是,masterViewController视图是在旋转之后添加到MGSplitViewController视图中的,因此它看起来有点“笨重”,但是它至少可以工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25246365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档