【问题标题】:How can improve UISlider response for blending mode?如何改善混合模式的 UISlider 响应?
【发布时间】:2013-12-22 16:40:24
【问题描述】:

我会使用 UISlider 通过以下代码调整 alpha。但是,滑块的响应非常缓慢。我该如何改进它?

提前致谢。

-(IBAction)alphaSliderAction:(UISlider*)slider
{

     //blending images
     UIGraphicsBeginImageContextWithOptions(bgImage.size, YES, 0.0);
    //
     // Use existing opacity as is
       [bgImage drawInRect:CGRectMake(0,0,bgImage.size.width,bgImage.size.height)];

     [layerAImage drawInRect:CGRectMake(0,0,bgImage.size.width,bgImage.size.height) blendMode:kCGBlendModeOverlay alpha:slider.value];


      finalImage = UIGraphicsGetImageFromCurrentImageContext();
     //
      UIGraphicsEndImageContext();
     //

      imgView.image=finalImage;

 }

【问题讨论】:

标签: ios objective-c uislider cgcontext


【解决方案1】:

您可以尝试使用 CoreImage 而不是 CoreGraphics 进行绘图。 CoreImage CIOverlayBlendMode 过滤器做同样的事情,但可能更快。

【讨论】:

    【解决方案2】:

    根本不要使用drawRect。相反,将您的图像安装在图像视图中,并在图像视图上设置 alpha 属性。您需要将图像视图上的 opaque 标志设置为 NO。这将使用 GPU 进行混合,这应该会快得多。

    或者,您可以将图像的 CGImage 安装在图层的内容属性中,然后将该图层添加到您的视图中。然后你可以设置图层的不透明度。您可以通过这种方式在 CALayers 上使用隐式动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 2016-07-17
      • 2020-02-06
      • 2018-03-26
      • 1970-01-01
      相关资源
      最近更新 更多