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 默认样式有圆角?的主要内容,如果未能解决你的问题,请参考以下文章