14

我正在将一个应用程序过渡到相当顺利的 iOS 7,有一件事我无法弄清楚。

我有一个带有几个按钮的视图控制器,我用 UIPopoverController 显示这些按钮。

在我看来,popover 控制器正在做一些事情来剪辑它的视图控制器的内容以进行四舍五入。

iOS6(我想要这个):

在此处输入图像描述

iOS7(有所改变):

在此处输入图像描述

我正在使用此处描述的自定义弹出框控制器背景类http://blog.teamtreehouse.com/customizing-the-design-of-uipopovercontroller

这是我的那个背景类的特定版本http://pastebin.com/fuNjBqwU

有谁知道要改变什么才能让它回到我的 iOS 6 外观?

4

3 回答 3

32

在弹出内容控制器中:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.view.superview.layer.cornerRadius = 0;
}
于 2013-12-12T14:33:44.793 回答
7

我尝试让@OneSman7 的解决方案工作,但cornerRadius 的视图不是 contentViewController.view 实例的直接超级视图。相反,我不得不沿着视图层次结构搜索cornerRadius 不为 0 的视图层次结构并将其重置(这只是一个 UIView 实例,没有要检查的特殊类名)。一个不太理想的解决方案,但到目前为止似乎有效。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
        UIView *view = self.view;
        while (view != nil) {
            view = view.superview;
            if (view.layer.cornerRadius > 0) {
                view.layer.cornerRadius = 2.0;
                view = nil;
            }
        }
    }
}
于 2014-01-30T02:06:32.237 回答
1

也许您可以将背景视图的 contentViewInsets 替换为:

+ (UIEdgeInsets)contentViewInsets{
    return UIEdgeInsetsZero;
}

然后只需在 contentViewController 的视图边缘添加一些额外的填充,这样即使角落仍然是圆角的,它们也不会包含任何弹出框内容,因此圆角效果将不可见。

于 2013-10-30T18:57:41.640 回答