Xcode5 iOS7-UIPopoverController角半径

Xcode5 iOS7-UIPopoverController角半径,ios,uipopovercontroller,ios7,Ios,Uipopovercontroller,Ios7,我正在将一个应用程序过渡到iOS 7,这已经相当顺利了,有一件事我想不出来 我有一个带有几个按钮的视图控制器,我用UIPopoverController显示这些按钮 在我看来,popover控制器正在做一些事情,将其视图控制器的内容剪裁为四舍五入 iOS6(我想要这个): iOS7(发生了一些变化): 我正在使用这里描述的自定义popover控制器后台类 这是我的背景类的具体版本 有人知道如何更改才能使其恢复iOS 6外观吗?也许您可以将背景视图的内容视图插图替换为: + (UIEdgeIn

我正在将一个应用程序过渡到iOS 7,这已经相当顺利了,有一件事我想不出来

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

在我看来,popover控制器正在做一些事情,将其视图控制器的内容剪裁为四舍五入

iOS6(我想要这个):

iOS7(发生了一些变化):

我正在使用这里描述的自定义popover控制器后台类

这是我的背景类的具体版本


有人知道如何更改才能使其恢复iOS 6外观吗?

也许您可以将背景视图的内容视图插图替换为:

+ (UIEdgeInsets)contentViewInsets{
    return UIEdgeInsetsZero;
}

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

在popover content controller中:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.view.superview.layer.cornerRadius = 0;
}

我试图让@OneSman7的解决方案发挥作用,但具有cornerRadius的视图不是contentViewController.view实例的直接superview。相反,我必须在视图层次结构中搜索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;
            }
        }
    }
}

这很有效。我在我的Popover风格的故事板序列中加载了一个子类UINavigationController,这个解决方案在我的子类中实现,我不再有内部圆角。谢谢!为了防止其他人和我有同样的问题,我想补充一点,如果您的contentView位于navigationController中,您需要调整为:
self.navigationController.view.superview.layer.cornerRadius=0如果没有superview视图,则while可能会失败。将“view=view.superview”放在“if”之后。