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