1

我目前正在开发一个可以在横向和纵向布局中运行的应用程序。当方向从纵向变为横向时,我在处理旋转广告时遇到了一些麻烦。我可以设置一个网格等以使广告垂直。我可以旋转它,但是当我这样做时它会变得一团糟。

我瞄准垂直的原因是它为我保持了最好的房地产。

我不确定我可以为我的情况提供多少细节,我只想让广告旋转 90 度,使其适合横向屏幕的“左侧或右侧”。但是旋转迫使它的网格仍然是一定的宽度。然后我在更改功能中放入一些控件以强制网格重新调整大小,但旋转后添加不会直接位于它的网格中。这方面有什么建议或方向吗?提前谢谢了。

此外,我正在考虑让两个广告元素简单地浮动在页面上(而不是在网格中)。并根据方向显示/隐藏每个,但当我想到它时,这听起来很愚蠢。

4

3 回答 3

1

我想我会让你知道我创建了一个控件来处理手机的旋转并保持广告静止。请按照这个SO 回答了解更多信息。

于 2013-10-28T08:03:28.423 回答
0

我无法找到对我有帮助的解决方案。我意识到我想要的是我帖子中的最后一条评论。保持广告的旋转方向变化。

要实现这一点,可以使用 LayoutTransform,但是它们在 WP8 中不可用。最初我有浮动菜单,可以在旋转更改时打开和关闭,但在不同尺寸的屏幕上会很麻烦。

我发现的最干净的蛮力解决方案是制作 3x5(行主要)网格布局。我的主页位于最中心的网格中,广告紧邻左侧、右侧和底部。最后,最左侧和最右侧网格的两个填充空间:

    <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto "/>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <Grid Grid.Row="1" Grid.Column="2">
            <phone:Pivot x:Name="ContentPanel">
                ...
            </phone:Pivot>
        </Grid>

        <Grid Name="AdBottom" Grid.Row="2" Grid.Column="2">
            ...
        </Grid>

        <Grid Name="AdRight" Grid.Row="1" Grid.Column="3" MaxWidth="80">            
                <adduplex:AdControl x:Name="adDuplexAdRight" AppId="?????" 
                                    RenderTransformOrigin="0.5,0.5"
                                    HorizontalAlignment="Center" 
                                    VerticalAlignment="Center"
                                    Margin="-200,0" Visibility="Collapsed">
                <adduplex:AdControl.RenderTransform>
                    <CompositeTransform Rotation="90"/>
                </adduplex:AdControl.RenderTransform>
        </Grid>

        <Grid Name="AdLeft" Grid.Row="1" Grid.Column="1" MaxWidth="80">
            ... <As Above, just negated>
        </Grid>

        <Grid Name="FillerLeft" Grid.Row="1" Grid.Column="0" MinWidth="80" Visibility="Collapsed">
        </Grid>

        <Grid Name="FillerRight" Grid.Row="1" Grid.Column="4" MinWidth="80" Visibility="Collapsed">
        </Grid>            
    </Grid>

Filler 元素及其最小宽度的原因是为了帮助边距溢出。没有它,你可以使用 Rendertransform 来旋转元素,但是当你试图将它的容器强制缩小到你想要的大小时,它会出现错误。这是因为旋转发生渲染之后,因此如果没有那些额外的填充列以允许溢出,则元素会在旋转时被切片。

因此,进行溢出并扩展广告的边距可以使其显示为锁定在网格中而不是浮动。然后我管理在 rotationchanged 事件上切换广告的可见性和填充区域。

这是我拥有的最简单的解决方案。其他人可以搜索合并 Silverlight LayoutTransformer,如此处所示。或者,如果使用付费工具包中的一个。到目前为止,这适用于我的简单应用程序。

于 2013-09-14T02:30:19.517 回答
0

使用具有正常宽度和高度的 PubCenter 广告,然后应用变换将其旋转 90 度。

于 2013-07-23T00:41:42.360 回答