Ios FXBlurView背景滞后

Ios FXBlurView背景滞后,ios,uiview,blur,Ios,Uiview,Blur,我在视图中使用背景模糊。我使用默认设置,这意味着它会更新每一帧。然而,由于某些原因,背景似乎有点滞后。下面是我遇到的问题的GIF: 如果有人能帮忙,那就太好了。 提前谢谢 编辑:为了符合尼克的建议,我对代码做了一些修改,并得出以下结论: 初始化时: self.sidebar.blurRadius = 30; self.sidebar.dynamic = NO; self.sidebar.contentMode = UIViewContentModeLeft; [se

我在视图中使用背景模糊。我使用默认设置,这意味着它会更新每一帧。然而,由于某些原因,背景似乎有点滞后。下面是我遇到的问题的GIF:
如果有人能帮忙,那就太好了。 提前谢谢

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

   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);
}];

但是,它似乎没有正确地更新/定位。提前谢谢你

如果视图的大小非常大,或者基础视图非常复杂,FXBlurView无法始终保持同步


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

展开@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);
    }];

谢谢

那不太对。您需要设置宽度的动画,而不是左边缘的动画,否则背景将无法正确定位,因为它固定在视图的左侧,并且您不希望它移动。将控件放置在侧栏模糊视图内固定大小的子视图中,固定在右侧。然后,当您将侧边栏宽度从0设置为250时,控件将显示为滑入,并且背景图像将正确显示。