Xcode5 iOS7 – UIPopoverController Corner Radius

我正在将应用程序转换到相当流畅的iOS 7,有一点我无法弄清楚。

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

它看起来像弹出控制器正在做一些事情来剪切它的视图控制器的内容被舍入。

iOS6(我想要这个):

在此处输入图像描述

iOS7(改变了一些东西):

在此处输入图像描述

我正在使用这里描述的自定义popover控制器后台类http://blog.teamtreehouse.com/customizing-the-design-of-uipopovercontroller

这是我的背景课程http://pastebin.com/fuNjBqwU的特定版本

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

我尝试使用@ 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; } } } } 

在弹出式内容控制器中:

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

我刚刚遇到同样的问题并在这里找到了一个(不太令人满意的)答案: UIView默认样式有圆角?

也许您可以用以下内容替换背景视图的contentViewInsets:

 + (UIEdgeInsets)contentViewInsets{ return UIEdgeInsetsZero; } 

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