У меня есть следующий хак , который рисует тени для различных элементов, которые у меня есть:
<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>
Однако, хотя тень выглядит идеально, она изначально не появляется, когдаДоступ к вкладкеСначала я должен посетить вторую вкладку, и только после возвращения на первую вкладку рисуется тень.
Я предполагаю, что это потому, что мне нужно вызвать что-то, чтобы перерисовать слой после добавления тени,но я не могу понять, как это сделать.Я пробовал event.object.ios.layer.setNeedsDisplay()
, но это не дает никакого эффекта.
Как я могу обеспечить отображение теней на первой вкладке рендера?