2016-07-25 12 views
0

Hallo, ich verwende Microsofts-Anzeigen in meiner UWP-App und möchte, dass die Größe der Anzeigen nach der Nutzung der App geändert wird, aber nicht funktioniert. Ich verstehe die Steuer Anzeige auf den gültigen Größen sein muss (wie here beschrieben), so schrieb ich diesen Code auf die Anzeige, um die Größe:Größenanpassung von Microsoft-Anzeigen

private void panel_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    if (e.NewSize.Width >= 728) 
    { 
     ad.Width = 728; 
     ad.Height = 90; 
    } 
    else if (e.NewSize.Width >= 640) 
    { 
     ad.Width = 640; 
     ad.Height = 100; 
    } 
    else if (e.NewSize.Width >= 480) 
    { 
     ad.Width = 480; 
     ad.Height = 80; 
    } 
    else if (e.NewSize.Width >= 320) 
    { 
     ad.Width = 320; 
     ad.Height = 50; 
    } 
    else if (e.NewSize.Width >= 300) 
    { 
     ad.Width = 300; 
     ad.Height = 50; 
    } 
} 

Dies machte die Steuerung der Größe entsprechend, aber die Anzeige in der Steuer sah schrecklich aus. Ich habe ad.Refresh() hinzugefügt; Am Ende hat das aber nichts geändert.

Weiß jemand, was zu tun ist?

Antwort

1

Ich habe das gleiche Problem konfrontiert. Leider werden die Anzeigen alle 30 Sekunden geladen und Sie können sie nicht mehr als einmal in 30 Sekunden aktualisieren. Dies ist der Grund, weil der Aufruf der Refresh() - Methode fehlschlägt. Ich habe einen Workaround verwendet, von dem ich hoffe, dass er Ihnen helfen kann. Ich habe die Anzeige mit einem StackPanel der gleichen Größe (und Position) der Anzeige "abgedeckt". Ich habe dieses Panel gezeigt, als ich die Größe der Anzeige ändern musste. Bei der Aktualisierung der Anzeige (Sie können es durch den Rückruf AdRefreshed abfangen), habe ich die Abdeckung ausgeblendet.

<StackPanel x:Name="AdsCover" Width="300" Height="50" Visibility="Visible" 
        Grid.Column="0" Grid.ColumnSpan="3" HorizontalAlignment="Left" VerticalAlignment="Bottom" Canvas.ZIndex="12" Background="WhiteSmoke"> 
      <Border x:Name="AdsBorder" BorderBrush="{x:Null}" Height="50"> 
       <TextBlock x:Name="AdsLoading" Text="Ads Loading..." HorizontalAlignment="Center" FontStyle="Italic" FontFamily="Calibri" FontSize="24" 
         TextAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
     </StackPanel> 
     <UI:AdControl x:Name="adsMS" 
       ApplicationId="3f83fe91-d6be-434d-a0ae-7351c5a997f1" 
       AdUnitId="10865270" 
       HorizontalAlignment="Left" 
       Height="50" 
       VerticalAlignment="Bottom" 
       Width="300" 
       Grid.Column="0" Grid.ColumnSpan="3" 
       Canvas.ZIndex="10" 
       ErrorOccurred="OnAdErrorOccurred" 
       AdRefreshed="OnAdRefreshed"/> 

In der Code-behind, in dem Sie die Anzeigengröße ändern müssen, können Sie dies tun:

... 
    // Change the size of the Ad. adsW and adsH are the new size 
    adsMS->SetValue(WidthProperty, 1.0*adsW); 
    adsMS->SetValue(HeightProperty, 1.0*adsH); 
    // Cover panel with the same size 
    AdsCover->SetValue(WidthProperty, 1.0*adsW); 
    AdsCover->SetValue(HeightProperty, 1.0*adsH); 
    AdsBorder->SetValue(HeightProperty, 1.0*adsH); 

    // If the size are changed, I hide the Ad with the panel. 
    // In this way, I can avoid to see the deformed Ad. 
    // m_previousAdsWidth and m_previousAdsHeight are the previous size 
    // of the Ad. 
    if ((m_previousAdsWidth != adsW || m_previousAdsHeight != adsH) 
     && m_previousAdsWidth > 0 && m_previousAdsHeight > 0) 
    { 
     AdsCover->SetValue(VisibilityProperty, Windows::UI::Xaml::Visibility::Visible); 
    } 
    m_previousAdsWidth = adsW; 
    m_previousAdsHeight = adsH; 
    ... 

In der Callback OnAdRefreshed() können Sie das Panel verstecken

// Called when the Ad is refreshed. 
void DirectXPage::OnAdRefreshed(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) 
{ 
    // If the Ad is hidden by the cover panel, I will make it visible again. 
    if (AdsCover->Visibility == Windows::UI::Xaml::Visibility::Visible) 
     AdsCover->SetValue(VisibilityProperty, Windows::UI::Xaml::Visibility::Collapsed); 
} 
+0

Das hat mir etwas geholfen, danke! –

Verwandte Themen