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

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

可能有帮助的事情:

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

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

【问题讨论】:

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

标签: ios uiview interface-builder nib


【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 2013-05-15
      • 2011-01-24
      • 2016-01-21
      相关资源
      最近更新 更多