UIView 默认样式有圆角?

Posted

技术标签:

【中文标题】UIView 默认样式有圆角?【英文标题】:UIView default styling has rounded corners? 【发布时间】:2012-07-09 19:12:41 【问题描述】:

我正在使用UIPopoverController 来显示UIView。布局有点类似于UISplitViewController,所以在“细节视图”上看起来有圆角很奇怪,因为它留下了一个小间隙。我根本找不到与其他人遇到此问题的任何信息,但这些圆角似乎是默认样式。可以去掉吗?

可能有帮助的事情:

我从一个 nib 文件加载我的视图,但我目前没有对默认的 UIView 进行任何更改 我尝试在viewDidLoad 中设置clipsToBound = NO 我尝试在viewDidLoad 中设置layer.cornerRadius = 0

视图的顶部似乎也有阴影,但很难分辨。有什么办法可以摆脱所有这些默认样式?我只想要一个空白方块。

【问题讨论】:

有机会附上屏幕截图吗? 不幸的是,我可能不应该这样做。但是在我添加这个赏金大约 10 分钟后,我完全取消了 UIPopover。对于我已经重写的功能来说,这太麻烦了。事后,我的猜测是 UIPopoverBackgroundView 正在剪裁我的UIView 的角落,即使我将它子类化并认为我一切都正确。哦,好吧。 【参考方案1】:

没有支持的方法可以使 UIPopoverController 内部的视图没有圆角。 UIPopoverController 的内部代码将您的视图添加到带有圆角的视图中,该圆角剪辑到边界。

可能有一种骇人听闻的方法来做到这一点,即等到 UIPopoverController 显示出来,然后遍历您视图的所有父级并将它们全部设置为具有 cornerRadius = 0;clipsToBounds = NO;,但即使您发现一个解决方案它可能不兼容所有版本的 ios,如果 Apple 将来更改 UIPopoverController 的一些内部代码,那么您的解决方案可能会中断。

如果您真的想这样做,那么最好的方法是创建您自己的类来模仿 UIPopoverController 功能。

【讨论】:

【参考方案2】:

UIPopoverController 默认使用圆角的黑色渐变色框。 但是,您可以使用自定义类来设置背景视图。 在这里尝试以下链接。

change color navigation controller in a popover

【讨论】:

我已经继承了UIPopoverBackgroundView. 圆角视图不是弹出框的框架,而是我在弹出框内显示的UIView【参考方案3】:

对于使用UIPopoverPresentationController 的任何人,以下应该可以工作。

override open func viewWillAppear(_ animated: Bool) 
    super.viewWillAppear(animated)

    view.superview?.layer.cornerRadius = 0

【讨论】:

以上是关于UIView 默认样式有圆角?的主要内容,如果未能解决你的问题,请参考以下文章

elementui的默认样式怎么修改

safari input默认样式

移动端一些常见的默认样式问题

在html中怎样设置超链接的背景是圆角的而不是默认矩形的?

字体样式 圆角边框

圆角到UITextField Xcode