迟到的阴影(iOS_SwiftUI)
大家注意看这个边界
这有一个阴影是后出来的
可能这个录屏的时候不太明显
我把这阴影的颜色加重一下
我们再看一下
好注意看啊
哎出来了
那为什么会这样呢
我们先来看一下这个阴影加在哪了
(我把动画恢复一下)
其实是夹在这个下滑的面板下面
也就说这个面板在哪
这个阴影就在哪
所以我们可以断定
在他打开的那一瞬间
下滑的这个面板不在这个位置上
那我们可以
这样试一下
我把这个面板的
层级放到最最上层
我们再来看一下
好我把动画调慢
注意看
大家看!那为什么会这样呢
因为啊这个面板需要上下的滑 动
那这个上下的滑动其实是利用了
我们控制 y轴的 偏移量来实现
他展开的时候还好
因为这个(时候)偏移量是0
他默认就是这个位置
但是如果想让他收起来
就要让他的偏移量
是他自身高度的负数
比如说他自身高度为120
那他的纵向偏移量就应该是-120
这样就缩回去了
但是问题来了
这个面板的高度是动态的
也就是说这里面的
排序的条件有可能比较多
那他这个面板就会比较高
所以我们在写代码的时候
是:不知道这个高度有多高的
我们只能在
页面加载完以后拿到这个高度
就说在这里
通过这个方法呢
我们拿到这个面板的高度
然后呢再去设置这个他的偏移量
但在此之前
我们是有一个默认的偏移量
这个默认的偏移量
为了不让它在加载之前出现在
可视范围内
我们把他的这个
默认的偏移量设置了一个
负的屏幕的高度
我们可以这样来试一下
我把这个
设置偏移量的先去掉
然后呢我们运行一下
好然后我们打开
这时候我们打开这个层级的视图
我们看一下层级结构
(这个关掉)
我把这个稍微拉一下
后面几个试图都不要了
就到这
好 点这儿
我把它缩小一下 大家看
现在呢这个下拉的面板是在这个位置
也就是说:刚才被注视的那段代码是
可以让他
在页面加载完以后跑下来
可以试一下把这个代码再加上
我们再来试一下
好把动画打开
注意看
他就下来了
那找到了问题的原因就好处理了
那首先呢我们先把默认的动画去掉
再来看一下
好注意看
没有问题
但是。。。(我把动画恢复一下)
他在展开的时候就有问题了
就是说他正常使用这个动画就没有了
所以呢我们要在他显示(展开)
和隐藏(折叠)的方法里面
自己去实现这个动画
哎其实也简单就:withAnimation
然后把它粘过来
这个也一样
withAnimation
我们再来试一下
把 动画 打开
没问题然后呢点击
也没问题
我把动画恢复一下
好这时候呢我们再把这个放回去
把这层级调回来
还让他在上面
(运行)
好这就可以了
大家看
然后呢这个(阴影的)颜色我再调回来
好这就可以了
最近更新 10mo ago