【问题标题】:alpha for background color not working in iOS背景颜色的 alpha 在 iOS 中不起作用
【发布时间】:2015-05-06 15:19:27
【问题描述】:

你知道为什么 alpha 参数在我的视图中不起作用吗?

  self.view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.4)

也请观看此视频

Video

谢谢

【问题讨论】:

  • 试试这个:[UIColor colorWithWhite: alpha:]
  • 试试这个:[self.view setAlpha:0.4];
  • self.view.alpha = 0.4 ,同样的结果

标签: ios iphone xcode swift uikit


【解决方案1】:

如果您使用故事板并使用 segue 呈现视图控制器,则向您显示具有透明背景的视图控制器的 segue 的呈现属性应如附件所示全屏。

然后在您的视图控制器中使用此设置背景颜色:

self.view.backgroundColor = UIColor(white: 0, alpha: 0.4)

【讨论】:

    【解决方案2】:

    这并不奇怪,它的行为完全符合其应有的行为。 UIColor的很多方法虽然是类方法,但还是有少数实例方法的,这就是其中之一。来自 UIColor documentation

    colorWithAlphaComponent:

    创建并返回具有相同颜色空间的颜色对象,并且 组件值作为接收器,但具有指定的 alpha 零件。所以,colorWithAlphaComponent: 只是改变了 alpha 值 其接收器。示例:

    let black = UIColor.blackColor() // 1.0 alpha
    self.view.backgroundColor = black.colorWithAlphaComponent(0.5) // 0.5 alpha
    

    【讨论】:

      【解决方案3】:

      我在 iOS 12 上发现了一个与标题相关的问题(但不是答案),其中 withAlphaComponent 不起作用。

      1. 在情节提要中,将视图背景颜色设置为名为 colour 的不透明
      2. 在代码中(例如 viewController 的 viewDidLoad),将此视图的背景颜色更改为相同的命名颜色但具有不同的 alpha(使用 withAlphaComponent)

      预期结果:视图背景颜色是指定的带有一些 alpha 的颜色。 实际结果:视图背景颜色是他命名的不带alpha的颜色。

      如果情节提要中设置的颜色是指定颜色以外的任何颜色,则不会出现此问题。它也不会出现在 iOS 14.1 上。

      【讨论】:

      • 同样的问题,旧 iOS 版本有什么解决办法吗?
      【解决方案4】:

      您正在展示 ViewController,因此您必须在之后在另一个 ViewController 上添加 UIViewControllerUIView它会起作用的。

         [[self view] addSubview:myViewController.view];
      

      【讨论】:

        猜你喜欢
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多