CAGradientLayer导致子视图不可见

时间:2016-05-24 08:20:52

标签: ios swift cagradientlayer

你好iOS和Swift的大师,

经过两个令人沮丧的日子,我拼命地决定在这里问。问题:

添加CAGradientLayer时,未显示子视图。

详细说明:

  • 我已经制作了一个方法来在扩展名中添加CAGradientLayer 的UIView
  • 我只是在任何视图上调用该方法,这本身就可以正常工作
  • 但是,如果我尝试在视图层次结构中使用此方法作为UIView(作为背景),不幸的是所有子视图都不再可见, 渐变似乎" overrender"所有子视图
  • 如果我不打电话给#34; addGradient"容器视图上的方法,所有子视图都正确显示
  • 令人惊叹的细节:虽然子视图不可见,但它们以某种方式呈现并且“活跃”#34; (例如"隐形" UIButton引发")
  • 我正在使用Autolayout

任何想法都将不胜感激! 提前谢谢。

2 个答案:

答案 0 :(得分:10)

LukeSideWalker,

不确定,但您可以随时尝试在所有其他图层下添加图层,以便它不会覆盖现有的子视图。试试这个,在您添加要查看的图层的扩展程序中

self.layer.insertSublayer(layer, atIndex: 0)

尝试添加ImageView作为subView工作得很好:)也应该解决你的问题。

答案 1 :(得分:0)

之前我遇到过类似的问题,并通过在视图中添加背景视图来解决问题。所以视图层次结构如下:

view
  backgroundView
  someView
    someViewInsideView
  someOtherView

热门视图alpha似乎也会影响子视图的alpha。因此,我使用具有清晰背景颜色的视图,并使用backgroundView为视图的背景颜色和其他属性提供alpha修饰符。