So für Android, wenn die Masterseite einer Master-Detailseite angezeigt wird, ist die Masterseite mit einer "Black Dim" Ansicht abgedeckt, so dass man die zwei Seiten mit dem Auge unterscheiden kann . In iOS ist die Detailseite nicht abgeblendet, daher ist es schwieriger, die Ansichten zu unterscheiden. Gibt es eine Möglichkeit, die Detailseite mit einer BoxView oder Frame zu überlagern, die "schwarz durchscheinend" ist, so dass die Seite ähnlich wie bei Android abgedunkelt wird? Ich habe viele verschiedene Farben und Trübungen einer Box-Ansicht ausprobiert, aber sie alle decken den Bildschirm vollständig ab und man kann sie nicht "durchschauen". Irgendwelche Ideen? Oder bessere Lösungen? Auch wenn es ein Kunden-Renderer für das BoxView ist, der funktioniert. Ich brauche nur Farbideen/Einstellungen, um es durchschauen zu lassen.Xamarin Dim Seite (Master Detail Seite)
Antwort
Beispiel hier: https://github.com/jgold6/XamarinSupportSamples/tree/master/XForms-TestShadingiOSDetailPage
Hier ist der Code, falls der Link jemals bricht:
MasterDetailPage mdPage;
Color origContentBgColor;
Color origPageBgColor;
public App()
{
mdPage = new MasterDetailPage();
mdPage.IsPresentedChanged += async (object sender, EventArgs e) => {
if (Device.OS == TargetPlatform.iOS) {
if (mdPage.IsPresented) {
var currentPage = (DetailPage)((NavigationPage)mdPage.Detail).CurrentPage;
origPageBgColor = currentPage.BackgroundColor;
origContentBgColor = currentPage.Content.BackgroundColor;
currentPage.BackgroundColor = Color.Black;
currentPage.Content.FadeTo(0.5);
if (currentPage.Content.BackgroundColor == Color.Default) {
currentPage.Content.BackgroundColor = Color.White;
}
}
else {
var currentPage = (DetailPage)((NavigationPage)mdPage.Detail).CurrentPage;
currentPage.BackgroundColor = origPageBgColor;
currentPage.Content.BackgroundColor = origContentBgColor;
currentPage.Content.FadeTo(1.0);
}
}
};
mdPage.Master = new MasterPage(){Title = "Master Page"};
mdPage.Detail = new NavigationPage(new DetailPage());
// The root page of your application
MainPage = mdPage;
}
Danke, das ist schön und es funktioniert, aber der einzige Haken ist, dass ich sehe, dass es dunkel schwarz wird, dann verblasst es zu der Farbe, die ich will und es sieht irgendwie wie ein Flimmern aus, wenn das passiert. Kennen Sie irgendeine Art von Overlay-Ansicht, die ich schnell ein-/ausblenden kann, ohne dass die Farb- und Überblendungsübergänge erforderlich sind? – theDoke
Hmm, das habe ich an meinem Ende nicht bemerkt. Aber Sie können immer noch den 'mdPage.IsPresentedChanged' Event-Handler verwenden, um zu tun, was Sie wollen ... d. H. Eine Überlagerung auf der Detailseite hinzufügen, aber IIRC das Hinzufügen eines Overlays war aus irgendeinem Grund problematisch, daher diese Lösung. – jgoldberger
Danke! Ich benutzte diesen Code, um die Deckkraft einfach zu verblassen, und das funktioniert für mich in Ordnung. – theDoke
nur die Reihenfolge der fadeTo Methode ändern der letzte Befehl und die dunkle schwarze efect zu sein ist weg!
... warten currentPage.Content.FadeTo (0.5); // < ==
Warum ändern Sie nicht einfach die Hintergrundfarbe der Masterseite? – BraveHeart
Das ist nicht der Affekt, den ich anstrebe oder das Farbthema meiner App. – theDoke