Nativescript 设置平台特定属性后强制视图重画
我已经为我拥有的各种元素绘制了阴影:Nativescript 设置平台特定属性后强制视图重画,nativescript,nativescript-vue,Nativescript,Nativescript Vue,我已经为我拥有的各种元素绘制了阴影: <template> <Page> <TabView> <TabViewItem title="Tab 1"> <StackLayout @loaded="addShadow"> <Label text="This box does have a shadow." />
<template>
<Page>
<TabView>
<TabViewItem title="Tab 1">
<StackLayout @loaded="addShadow">
<Label text="This box does have a shadow." />
</StackLayout>
</TabViewItem>
<TabViewItem title="Tab 2">
<StackLayout>
<Label text="This box doesn't have a shadow." />
</StackLayout>
</TabViewItem>
</TabView>
</Page>
</template>
<script>
export default {
methods: {
addShadow(event) {
if (event.object.ios) {
event.object.ios.layer.masksToBounds = false;
event.object.ios.layer.shadowOpacity = 0.5;
event.object.ios.layer.shadowRadius = 5.0;
event.object.ios.layer.shadowColor = new Color('#000000').ios.CGColor;
event.object.ios.layer.shadowOffset = CGSizeMake(0.0, 2.0);
}
}
}
}
</script>
<style scoped>
StackLayout {
background: #ffffff;
padding: 16;
margin: 16;
}
</style>
导出默认值{
方法:{
addShadow(事件){
if(event.object.ios){
event.object.ios.layer.masksToBounds=false;
event.object.ios.layer.shadowOpacity=0.5;
event.object.ios.layer.shadowRadius=5.0;
event.object.ios.layer.shadowColor=新颜色('#000000').ios.CGColor;
event.object.ios.layer.shadowOffset=CGSizeMake(0.0,2.0);
}
}
}
}
堆垛布局{
背景:#ffffff;
填充:16;
保证金:16;
}
但是,虽然阴影看起来很完美,但它最初在第一次访问选项卡时不会出现。我必须首先访问第二个选项卡,只有在返回到第一个选项卡后,才会绘制阴影
我假设这是因为在添加阴影后,我需要调用一些东西来重新绘制图层,但我不知道如何做到这一点。我尝试了event.object.ios.layer.setNeedsDisplay()
,但没有效果
如何确保阴影在第一个选项卡渲染时显示?为什么不向这些选项卡添加条件CSS类?谢谢你的回复!如何解决我的问题?