【问题标题】:Vertical Alpha Gradient without the use of color in iOS [duplicate]在iOS中不使用颜色的垂直Alpha渐变[重复]
【发布时间】:2014-07-11 18:36:06
【问题描述】:

我有一个应用程序使用后置摄像头的输出作为背景。我在相机视图顶部还有一个 UITableView 或 UIScrollView(取决于 ViewController)。我想添加一个顶栏菜单。此菜单不应在其下方包含任何 UITableView 或 UIScrollView 的内容。为了让它看起来不错,我希望 UITableView 和 UIScrollView 在渐变上淡出... 255 (1.0f) alpha 一直到距离顶部栏菜单视图约 45 像素。我尝试了许多“解决方案”,但他们都假设您想要淡化的背景颜色也是已知的,在这种情况下,背景颜色实际上是一个视频(各种各样)。这里真正的问题是:iOS 有没有办法让视图上只有 alpha 渐变......即使它下面的视图是动态变化的图像?这个解决方案不能 包括任何图像处理,因为“图像”实际上是后置摄像头输出,处理图像将花费太多时间并最终降低应用程序的速度。

提前感谢愿意回答我问题的任何人...如果根本不可能,请解释原因,我愿意将您的答案标记为正确。

任何代码都可以使用 Objective-C 或 Swift(首选 Swift)

iOS 8 是这个应用程序的目标操作系统,所以如果有任何 iOS 8 库可以帮助解决这个问题,请随时使用它。

【问题讨论】:

    标签: ios objective-c swift calayer


    【解决方案1】:

    之前回答过here

    CAGradientLayer *gradient = [CAGradientLayer layer];
    
    gradient.frame = self.tableView.superview.bounds;
    gradient.colors = @[(id)[UIColor clearColor].CGColor, (id)[UIColor blackColor].CGColor, (id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor];
    gradient.locations = @[@0.0, @0.03, @0.97, @1.0];
    
    self.tableView.superview.layer.mask = gradient;
    

    欲了解更多信息,请查看原始链接。

    【讨论】:

      【解决方案2】:

      是的,您可以使用 CAGradientLayer 作为遮罩。 This article 举了很多例子。如果您在浏览完这些内容后需要进一步的帮助,请告诉我。

      【讨论】:

      • 感谢您的快速回复!我在寻找答案时遇到了这篇文章。我遇到的问题是它使用白色作为仅与 alpha 相对应的渐变。这篇文章最大的问题是我已经尝试过这段代码,但它不适用于背景清晰的视图。
      猜你喜欢
      • 1970-01-01
      • 2017-11-12
      • 2014-10-10
      • 1970-01-01
      • 2018-06-20
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      相关资源
      最近更新 更多