-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
ShowModalWithTransparentBkgndGalleryPage.cs
123 lines (100 loc) · 3.55 KB
/
ShowModalWithTransparentBkgndGalleryPage.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
using System.Linq;
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
namespace Xamarin.Forms.Controls.GalleryPages
{
class ShowModalWithTransparentBkgndGalleryPage : ContentPage
{
readonly Picker _modalPresentationStylesPicker;
readonly PageWithTransparentBkgnd _pageWithTransparentBkgnd;
int _appearingPageCount = 0;
int _disappearingPageCount = 0;
int _appearingModalCount = 0;
int _disappearingModalCount = 0;
Label _pageLifeCycleCount = new Label();
Label _modalLifeCycleCount = new Label();
public ShowModalWithTransparentBkgndGalleryPage()
{
BackgroundColor = Color.LightPink;
var layout = new StackLayout();
_modalPresentationStylesPicker = new Picker();
var modalPresentationStyles = Enum.GetNames(typeof(UIModalPresentationStyle)).Select(m => m).ToList();
_modalPresentationStylesPicker.Title = "Select ModalPresentation Style";
_modalPresentationStylesPicker.ItemsSource = modalPresentationStyles;
_modalPresentationStylesPicker.SelectedIndex = 2;
_modalPresentationStylesPicker.SelectedIndexChanged += (sender, args) =>
{
var selected = _modalPresentationStylesPicker.SelectedItem;
switch (selected)
{
case "Automatic":
_pageWithTransparentBkgnd.On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.Automatic);
break;
case "FormSheet":
_pageWithTransparentBkgnd.On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.FormSheet);
break;
case "FullScreen":
_pageWithTransparentBkgnd.On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.FullScreen);
break;
case "OverFullScreen":
_pageWithTransparentBkgnd.On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.OverFullScreen);
break;
case "PageSheet":
_pageWithTransparentBkgnd.On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.PageSheet);
break;
}
};
if (Device.RuntimePlatform == Device.iOS)
{
layout.Children.Add(_modalPresentationStylesPicker);
}
var showTransparentModalPageButton = new Button()
{
Text = "Show Transparent Modal Page",
VerticalOptions = LayoutOptions.Start,
HorizontalOptions = LayoutOptions.Center
};
showTransparentModalPageButton.Clicked += ShowModalBtnClicked;
layout.Children.Add(showTransparentModalPageButton);
layout.Children.Add(_pageLifeCycleCount);
layout.Children.Add(_modalLifeCycleCount);
Content = layout;
_pageWithTransparentBkgnd = new PageWithTransparentBkgnd();
_pageWithTransparentBkgnd.Appearing += (_, __) =>
{
_appearingModalCount++;
UpdateLabels();
};
_pageWithTransparentBkgnd.Disappearing += (_, __) =>
{
_disappearingModalCount++;
UpdateLabels();
};
_pageWithTransparentBkgnd.On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.OverFullScreen);
}
void UpdateLabels()
{
_pageLifeCycleCount.Text = $"Page Appearing: {_appearingPageCount} Disappearing: {_disappearingPageCount}";
_modalLifeCycleCount.Text = $"Modal Appearing: {_appearingModalCount} Disappearing: {_disappearingModalCount}";
}
protected override void OnAppearing()
{
base.OnAppearing();
Console.WriteLine("OnAppearing");
_appearingPageCount++;
UpdateLabels();
}
protected override void OnDisappearing()
{
base.OnDisappearing();
Console.WriteLine("OnDisappearing");
_disappearingPageCount++;
UpdateLabels();
}
void ShowModalBtnClicked(object sender, EventArgs e)
{
Navigation.PushModalAsync(_pageWithTransparentBkgnd);
}
}
}