【问题标题】:UIView group opacity in single view heirachy单个视图层次结构中的 UIView 组不透明度
【发布时间】:2012-05-11 07:48:56
【问题描述】:

我正在编写一个 UI 库,我希望能够在其中拥有 UIView 的 alpha,就好像设置了 UIViewGroupOpacity info.plist ket 一样。请参阅以下链接:

Make UIView and subviews translucent as one layer, not individually

iOS controlling UIView alpha behaviour for subviews

但是,当我正在编写一个库时,我不希望项目必须设置这个全局键,并影响主项目的行为。

还有其他方法可以实现吗?我不想循环浏览所有子视图并设置每个子视图的 alpha,因为包含我的 lib 的项目可能启用了此密钥...

【问题讨论】:

    标签: ios uiview


    【解决方案1】:

    有,可以设置视图层的shouldRasterize

    containerView.layer.shouldRasterize = YES;
    // Not setting rasterizationScale, will cause blurry images on retina displays:
    containerView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
    

    这将与UIViewGroupOpacity 具有相同的效果,但仅适用于containerView 及其子视图。

    【讨论】:

    • 如果 superView 是层次结构的超级视图,这是否有效?在 iOS 7 中似乎没有任何影响。
    【解决方案2】:

    对于 iOS 7.0 及更高版本:

    从 iOS 7.0 开始,可以通过 allowsGroupOpacity 属性单独控制每个 CALayer。通过将其设置为YES,您将获得与设置UIViewGroupOpacity 相同的行为,但仅针对该特定层。

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2011-09-21
      • 2011-09-01
      • 1970-01-01
      相关资源
      最近更新 更多