1

私は現在、横向きと縦向きの両方のレイアウトで動作するアプリに取り組んでいます。向きが縦向きから横向きに変わるときに、広告を回転させるのに問題があります。広告を縦に並べるグリッドなどを設定できます。回転させることはできますが、回転させるとすべてが台無しになります。

私が垂直を目指している理由は、それが私にとって最高の不動産を維持しているからです。

自分の状況にどれだけ詳細を提供できるかわかりません。横向きの画面の「左または右」に収まるように、広告を90度回転させたいだけです。ただし、回転すると、グリッドは特定の幅のままになります。次に、変更関数にいくつかのコントロールを配置して、グリッドのサイズを強制的に変更しましたが、回転後に追加がグリッドに正しく配置されません。これに関する提案や方向性はありますか?よろしくお願いします。

また、(グリッドではなく)ページ上に浮かぶ2つの広告要素があると考えていました。そして、向きに応じてそれぞれを表示/非表示にしますが、考えてみるとばかげているように聞こえました。

4

3 に答える 3

1

電話の回転を処理し、広告を静止させておくためのコントロールを作成したことをお知らせします。詳細については、このSOの回答に従ってください。

于 2013-10-28T08:03:28.423 に答える
0

通常の幅と高さのPubCenter広告を使用してから、変換を適用して90度回転させます。

于 2013-07-23T00:41:42.360 に答える
0

私は私を助ける解決策を見つけることができませんでした。私が望んでいたのは、私の投稿の最後のコメントが実現したことであることに気づきました。回転が変化しても広告の向きを維持します。

これを実現するには、LayoutTransformを使用できますが、WP8では使用できません。当初、回転の変更時にオンとオフを切り替えるフローティングメニューがありましたが、別のサイズの画面では面倒でした。

私が見つけた最もクリーンなブルートフォースソリューションは、3x5(行メジャー)グリッドレイアウトを作成することです。私のメインページは一番中央のグリッドにあり、広告はすぐ左、右、下にあります。そして最後に、左端と右端のグリッドに2つのフィラースペースがあります。

    <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>

フィラー要素とその最小幅の理由は、マージンのオーバーフローを支援するためです。これがないと、Rendertransformを使用して要素を回転させることができますが、コンテナを希望のサイズに強制的に縮小しようとすると、正しく表示されませんでした。これは、レンダリングに回転が発生するためです。オーバーフローを可能にするための余分な埋め込み列がないと、要素は回転時にスライスされます。

そのため、オーバーフローを実行して広告の余白を拡張すると、広告がフローティングではなくグリッドにロックされた状態で表示されるようになります。次に、rotationchangedイベントで広告の表示とフィラー領域を切り替えることができます。

これは私が持っていた最も簡単な解決策です。他のユーザーは、ここに表示されているように、SilverlightLayoutTransformerを組み込むことを検索できます。または、有料のツールキットからのものを使用している場合。これは私のシンプルなアプリではこれまでのところ機能します。

于 2013-09-14T02:30:19.517 に答える