Принудительно перерисовать представление после установки определенных атрибутов платформы - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть следующий хак , который рисует тени для различных элементов, которые у меня есть:

<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(), но это не дает никакого эффекта.

Как я могу обеспечить отображение теней на первой вкладке рендера?

...