迟到的阴影(iOS_SwiftUI)

大家注意看这个边界

这有一个阴影是后出来的

可能这个录屏的时候不太明显

我把这阴影的颜色加重一下

我们再看一下

好注意看啊

哎出来了

那为什么会这样呢

我们先来看一下这个阴影加在哪了

(我把动画恢复一下)

其实是夹在这个下滑的面板下面

也就说这个面板在哪

这个阴影就在哪

所以我们可以断定

在他打开的那一瞬间

下滑的这个面板不在这个位置上

那我们可以

这样试一下

我把这个面板的

层级放到最最上层

我们再来看一下

好我把动画调慢

注意看

大家看!那为什么会这样呢

因为啊这个面板需要上下的滑动

那这个上下的滑动其实是利用了

我们控制 y轴的 偏移量来实现

他展开的时候还好

因为这个(时候)偏移量是0

他默认就是这个位置

但是如果想让他收起来

就要让他的偏移量

是他自身高度的负数

比如说他自身高度为120

那他的纵向偏移量就应该是-120

这样就缩回去了

但是问题来了

这个面板的高度是动态的

也就是说这里面的

排序的条件有可能比较多

那他这个面板就会比较高

所以我们在写代码的时候

是:不知道这个高度有多高的

我们只能在

页面加载完以后拿到这个高度

就说在这里

通过这个方法呢

我们拿到这个面板的高度

然后呢再去设置这个他的偏移量

但在此之前

我们是有一个默认的偏移量

这个默认的偏移量

为了不让它在加载之前出现在

可视范围内

我们把他的这个

默认的偏移量设置了一个

负的屏幕的高度

我们可以这样来试一下

我把这个

设置偏移量的先去掉

然后呢我们运行一下

好然后我们打开

这时候我们打开这个层级的视图

我们看一下层级结构

(这个关掉)

我把这个稍微拉一下

后面几个试图都不要了

就到这

好 点这儿

我把它缩小一下 大家看

现在呢这个下拉的面板是在这个位置

也就是说:刚才被注视的那段代码是

可以让他

在页面加载完以后跑下来

可以试一下把这个代码再加上

我们再来试一下

好把动画打开

注意看

他就下来了

那找到了问题的原因就好处理了

那首先呢我们先把默认的动画去掉

再来看一下

好注意看

没有问题

但是。。。(我把动画恢复一下)

他在展开的时候就有问题了

就是说他正常使用这个动画就没有了

所以呢我们要在他显示(展开)

和隐藏(折叠)的方法里面

自己去实现这个动画

哎其实也简单就:withAnimation

然后把它粘过来

这个也一样

withAnimation

我们再来试一下

把 动画 打开

没问题然后呢点击

也没问题

我把动画恢复一下

好这时候呢我们再把这个放回去

把这层级调回来

还让他在上面

(运行)

好这就可以了

大家看

然后呢这个(阴影的)颜色我再调回来

好这就可以了

最后更新于