2016-09-20 50 views
2

我有一个UIViewController,我将它显示为UIModalPresentationPopover。它的拐角半径设置为10.0,边框宽度设置为1.0。iOS10 - 角半径不能与边框一起工作

- (void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews];  

    self.view.layer.borderWidth = 1.0f; 
    self.view.layer.cornerRadius = 10.0f; 
    self.view.layer.masksToBounds = YES; 
} 

它没有显示沿角半径的任何边界,它给出了一个奇怪的效果。它在iOS10之前工作正常。我该怎么做才能解决这个问题?

编辑:的屏幕截图作为 enter image description here

如果我加2,则像素边框仍为1个像素从View enter image description here

+0

pl。尝试[self.view setClipsToBounds:YES];并删除self.view.layer.masksToBounds = YES; –

+0

@KetanP已经开始剪辑 – Hassy

+0

你可以显示你的屏幕截图吗? –

回答

1

我解决我的问题通过下面的代码

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")){ 
    self.view.superview.layer.cornerRadius = 15.0f; 
} 

我并设置视图拐角半径10.0所以15.0是在其中上海华不会与它的子视图拐角半径和边界染指到它显示为模糊或1个像素更少的精确值。

编辑:自定义创建的UIViewController如果动画可能需要在完成动画后实现上述代码。

5

你的代码是好的,但它缺少一个行,

失踪
view.clipsToBounds = true 

设置此行并再次运行。

希望这会帮助你。

4

XCode8中的新事物我们不能直接设置layercornerRadius

当你想申请cornerRadiusUIView需要添加一行代码,然后应用cornerRadius

yourButton.layoutIfNeeded()

实施例到目的C.

[yourButton layoutIfNeeded]; 
yourButton.layer.cornerRadius = yourButton.frame.size.height/2; 
[[yourButton layer] setBorderWidth:2.0f]; 

实施例成Swift3

self.layoutIfNeeded() 
yourButton.layer.cornerRadius = self.frame.height/2.0 
yourButton.layer.borderWidth = 2.0 
+0

似乎不适用于我的情况 – Hassy

+0

@您是否尝试使用XCode8? –

+0

是的xcode8和iOS 10.02 – Hassy