FXBlurView背景滞后



我在UIViews上使用FXBlurView进行背景模糊处理。我使用默认设置,这意味着它会更新每一帧。然而,由于某种原因,背景似乎有点滞后。这是我遇到的问题的GIF:
BlurGIFhttp://www.interdazzle.com/misc/forums/BlurGIF.gif如果有人能帮忙,那就太好了。提前感谢!

编辑:我修改了一些代码,以符合Nick的建议,并得出了以下结论:初始化时:

   self.sidebar.blurRadius = 30;
    self.sidebar.dynamic = NO;
    self.sidebar.contentMode = UIViewContentModeLeft;
    [self.sidebar updateAsynchronously:YES completion:^{
        self.sidebar.frame = CGRectMake(0, 0, 250, [[UIScreen mainScreen] bounds].size.height);
    }];

当我制作动画时:

[UIView animateWithDuration:0.5 animations:^{
    BOOL open = self.sidebar.frame.size.width >= 250;
    self.sidebar.frame = CGRectMake(open? -250: 0, self.sidebar.frame.origin.y, open? 0: 250, self.sidebar.frame.size.height);
}];

然而,它似乎没有正确更新/定位。提前谢谢!

扩展@NickLockwood的问题:
当FXBlurView启动时,我运行以下代码:

self.sidebar.blurRadius = 30;
self.sidebar.dynamic = NO;
self.sidebar.contentMode = UIViewContentModeRight;
self.sidebar.layer.contentsGravity = kCAGravityBottomLeft;
[self.sidebar setClipsToBounds:YES];
[self.sidebar updateAsynchronously:YES completion:^{
    // Whatever you want
}];

然后我简单地将对象设置为这样的动画:

[UIView animateWithDuration:0.5 animations:^{
        BOOL open = self.sidebar.frame.size.width > 125; // Over half way done
        self.sidebar.frame = CGRectMake(0,0, open? 0 : 250, [[UIScreen mainScreen] bounds].size.height);
    }];

谢谢!

FXBlurView无法始终跟上视图的大小,或者底层视图非常复杂。

有一个有效的技巧,你只渲染模糊一次,然后调整可见区域,而不是每帧都重新绘制。如果您查看FXBlurView中包含的滑动覆盖示例,您可以看到这是如何实现的。

相关内容

  • 没有找到相关文章

最新更新