我有一个UIViewController
,我将其显示为 UIModalPresentationPopover 。它的角半径设置为10.0,边框宽度设置为1.0。
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
self.view.layer.borderWidth = 1.0f;
self.view.layer.cornerRadius = 10.0f;
self.view.layer.masksToBounds = YES;
}
它没有沿着角半径显示任何边界,并且它产生了奇怪的效果。它在iOS10之前运行良好。我该怎么做才能解决这个问题?
答案 0 :(得分:7)
您的代码很好,但缺少一行,
view.clipsToBounds = true
设置此行并再次运行。
希望这会对你有所帮助。
答案 1 :(得分:4)
XCode8新功能我们无法直接设置cornerRadius
的{{1}}。
如果您要应用layer
cornerRadius
,则需要在应用UIView
之前添加一行代码。
yourButton.layoutIfNeeded()
目标C的例子。
cornerRadius
进入Swift3的示例
[yourButton layoutIfNeeded];
yourButton.layer.cornerRadius = yourButton.frame.size.height/2;
[[yourButton layer] setBorderWidth:2.0f];
答案 2 :(得分:1)
我通过以下代码解决了我的问题
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")){
self.view.superview.layer.cornerRadius = 15.0f;
}
我确实将视角半径设置为 10.0 ,因此 15.0 是 superview 不会干涉其子视图的确切值角半径和边框将其显示为模糊或减少1个像素。
编辑:自定义创建的UIViewController,如果动画可能需要在完成动画制作后实现上述代码。