summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries')
-rw-r--r--Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/MasterDetailPageiOS.cs178
-rw-r--r--Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs46
-rw-r--r--Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/TabbedPageiOS.cs97
3 files changed, 313 insertions, 8 deletions
diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/MasterDetailPageiOS.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/MasterDetailPageiOS.cs
new file mode 100644
index 00000000..715fd6a1
--- /dev/null
+++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/MasterDetailPageiOS.cs
@@ -0,0 +1,178 @@
+using System.Collections.Generic;
+using System.Windows.Input;
+using Xamarin.Forms.PlatformConfiguration;
+using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
+
+namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries
+{
+ public class MasterDetailPageiOS : MasterDetailPage
+ {
+ public MasterDetailPageiOS(ICommand restore)
+ {
+ MasterBehavior = MasterBehavior.Popover;
+
+ var master = new ContentPage { Title = "Master Detail Page" };
+ var masterContent = new StackLayout { Spacing = 10, Margin = new Thickness(0, 10, 5, 0) };
+ var detail = new ContentPage
+ {
+ Title = "This is the detail page's Title",
+ Padding = new Thickness(0,20,0,0)
+ };
+
+ var navItems = new List<NavItem>
+ {
+ new NavItem("Display Alert", "\uE171", new Command(() => DisplayAlert("Alert", "This is an alert", "OK"))),
+ new NavItem("Return To Gallery", "\uE106", restore),
+ new NavItem("Save", "\uE105", new Command(() => DisplayAlert("Save", "Fake save dialog", "OK"))),
+ new NavItem("Audio", "\uE189", new Command(() => DisplayAlert("Audio", "Never gonna give you up...", "OK"))),
+ new NavItem("Set Detail to Navigation Page", "\uE16F", new Command(() => Detail = CreateNavigationPage())),
+ new NavItem("Set Detail to Content Page", "\uE160", new Command(() => Detail = detail)),
+ };
+
+ var navList = new NavList(navItems);
+
+ masterContent.Children.Add(navList);
+ master.Content = masterContent;
+
+ var detailContent = new StackLayout {
+ VerticalOptions = LayoutOptions.Center,
+ HorizontalOptions = LayoutOptions.Center,
+ Children =
+ {
+ new Label
+ {
+ Text = "This is a ContentPage with StatusBarHiddenMode.True"
+ }
+ }
+ };
+
+ detail.Content = detailContent;
+
+ Master = master;
+
+ detail.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.True);
+
+ Detail = detail;
+ }
+
+ public class NavItem
+ {
+ public NavItem(string text, string icon, ICommand command)
+ {
+ Text = text;
+ Icon = icon;
+ Command = command;
+ }
+
+ public ICommand Command { get; set; }
+
+ public string Icon { get; set; }
+
+ public string Text { get; set; }
+ }
+
+ public class NavList : ListView
+ {
+ public NavList(IEnumerable<NavItem> items)
+ {
+ ItemsSource = items;
+ ItemTapped += (sender, args) => (args.Item as NavItem)?.Command.Execute(null);
+
+ ItemTemplate = new DataTemplate(() =>
+ {
+ var grid = new Grid();
+ grid.ColumnDefinitions.Add(new ColumnDefinition { Width = 48 });
+ grid.ColumnDefinitions.Add(new ColumnDefinition { Width = 200 });
+
+ grid.Margin = new Thickness(0, 10, 0, 10);
+
+ var text = new Label
+ {
+ VerticalOptions = LayoutOptions.Fill
+ };
+ text.SetBinding(Label.TextProperty, "Text");
+
+ var glyph = new Label
+ {
+ FontSize = 24,
+ HorizontalTextAlignment = TextAlignment.Center
+ };
+
+ glyph.SetBinding(Label.TextProperty, "Icon");
+
+ grid.Children.Add(glyph);
+ grid.Children.Add(text);
+
+ Grid.SetColumn(glyph, 0);
+ Grid.SetColumn(text, 1);
+
+ grid.WidthRequest = 48;
+
+ var cell = new ViewCell
+ {
+ View = grid
+ };
+
+ return cell;
+ });
+ }
+ }
+
+ static NavigationPage CreateNavigationPage()
+ {
+ var page = new NavigationPage { Title = "This is the Navigation Page Title" };
+
+ page.PushAsync(CreateNavSubPage());
+
+ return page;
+ }
+
+ static ContentPage CreateNavSubPage()
+ {
+ var page = new ContentPage();
+ var content = new StackLayout();
+ var navigateButton = new Button() { Text = "Push Another Page" };
+
+ navigateButton.Clicked += (sender, args) => page.Navigation.PushAsync(CreateNavSubPage());
+
+ var togglePrefersStatusBarHiddenButtonForPageButton = new Button
+ {
+ Text = "Toggle PrefersStatusBarHidden for Page"
+ };
+ var togglePreferredStatusBarUpdateAnimationButton = new Button
+ {
+ Text = "Toggle PreferredStatusBarUpdateAnimation"
+ };
+
+ togglePrefersStatusBarHiddenButtonForPageButton.Command = new Command(() =>
+ {
+ var mode = page.On<iOS>().PrefersStatusBarHidden();
+ if (mode == StatusBarHiddenMode.Default)
+ page.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.True);
+ else if (mode == StatusBarHiddenMode.True)
+ page.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.False);
+ else
+ page.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.Default);
+ });
+
+ togglePreferredStatusBarUpdateAnimationButton.Command = new Command(() =>
+ {
+ var animation = page.On<iOS>().PreferredStatusBarUpdateAnimation();
+ if (animation == UIStatusBarAnimation.Fade)
+ page.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.Slide);
+ else if (animation == UIStatusBarAnimation.Slide)
+ page.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.None);
+ else
+ page.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.Fade);
+ });
+
+ content.Children.Add(navigateButton);
+ content.Children.Add(togglePrefersStatusBarHiddenButtonForPageButton);
+ content.Children.Add(togglePreferredStatusBarUpdateAnimationButton);
+
+ page.Content = content;
+
+ return page;
+ }
+ }
+}
diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs
index 92f278bb..a24aabe6 100644
--- a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs
+++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/NavigationPageiOS.cs
@@ -6,13 +6,27 @@ namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries
{
public class NavigationPageiOS : NavigationPage
{
+ public NavigationPageiOS(Page root, ICommand restore) : base(root)
+ {
+ BackgroundColor = Color.Pink;
+ On<iOS>().EnableTranslucentNavigationBar();
+ CurrentPage.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.Fade);
+ }
+
public static NavigationPageiOS Create(ICommand restore)
{
var restoreButton = new Button { Text = "Back To Gallery" };
restoreButton.Clicked += (sender, args) => restore.Execute(null);
var translucentToggleButton = new Button { Text = "Toggle Translucent NavBar" };
-
+ var togglePrefersStatusBarHiddenButton = new Button
+ {
+ Text = "Toggle PrefersStatusBarHidden"
+ };
+ var togglePreferredStatusBarUpdateAnimationButton = new Button
+ {
+ Text = "Toggle PreferredStatusBarUpdateAnimation"
+ };
var content = new ContentPage
{
Title = "Navigation Page Features",
@@ -20,7 +34,7 @@ namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries
{
VerticalOptions = LayoutOptions.Center,
HorizontalOptions = LayoutOptions.Center,
- Children = { translucentToggleButton, restoreButton }
+ Children = { translucentToggleButton, restoreButton, togglePrefersStatusBarHiddenButton, togglePreferredStatusBarUpdateAnimationButton}
}
};
@@ -28,13 +42,29 @@ namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries
translucentToggleButton.Clicked += (sender, args) => navPage.On<iOS>().SetIsNavigationBarTranslucent(!navPage.On<iOS>().IsNavigationBarTranslucent());
- return navPage;
- }
+ togglePrefersStatusBarHiddenButton.Command = new Command(() =>
+ {
+ var mode = navPage.CurrentPage.On<iOS>().PrefersStatusBarHidden();
+ if (mode == StatusBarHiddenMode.Default)
+ navPage.CurrentPage.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.True);
+ else if (mode == StatusBarHiddenMode.True)
+ navPage.CurrentPage.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.False);
+ else
+ navPage.CurrentPage.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.Default);
+ });
- public NavigationPageiOS(Page root, ICommand restore) : base(root)
- {
- BackgroundColor = Color.Pink;
- On<iOS>().EnableTranslucentNavigationBar();
+ togglePreferredStatusBarUpdateAnimationButton.Command = new Command(() =>
+ {
+ var animation = navPage.On<iOS>().PreferredStatusBarUpdateAnimation();
+ if (animation == UIStatusBarAnimation.Fade)
+ navPage.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.Slide);
+ else if (animation == UIStatusBarAnimation.Slide)
+ navPage.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.None);
+ else
+ navPage.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.Fade);
+ });
+
+ return navPage;
}
}
} \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/TabbedPageiOS.cs b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/TabbedPageiOS.cs
new file mode 100644
index 00000000..73cce1c9
--- /dev/null
+++ b/Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries/TabbedPageiOS.cs
@@ -0,0 +1,97 @@
+using System.Windows.Input;
+using Xamarin.Forms.PlatformConfiguration;
+using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
+
+namespace Xamarin.Forms.Controls.GalleryPages.PlatformSpecificsGalleries
+{
+ public class TabbedPageiOS : TabbedPage
+ {
+ public TabbedPageiOS(ICommand restore)
+ {
+ Children.Add(CreatePage(restore, "Page One"));
+ Children.Add(CreatePage(restore, "Page Two"));
+ }
+
+ ContentPage CreatePage(ICommand restore, string title)
+ {
+ var page = new ContentPage {
+ Title = title
+ };
+ var content = new StackLayout
+ {
+ VerticalOptions = LayoutOptions.Fill,
+ HorizontalOptions = LayoutOptions.Fill,
+ Padding = new Thickness(0, 20, 0, 0)
+ };
+ content.Children.Add(new Label
+ {
+ Text = "TabbedPage iOS Features",
+ FontAttributes = FontAttributes.Bold,
+ HorizontalTextAlignment = TextAlignment.Center,
+ VerticalTextAlignment = TextAlignment.Center
+ });
+
+ var togglePrefersStatusBarHiddenButton = new Button
+ {
+ Text = "Toggle PrefersStatusBarHidden for TabbedPage"
+ };
+ var togglePrefersStatusBarHiddenForPageButton = new Button
+ {
+ Text = "Toggle PrefersStatusBarHidden for Page"
+ };
+ var togglePreferredStatusBarUpdateAnimationButton = new Button
+ {
+ Text = "Toggle PreferredStatusBarUpdateAnimation"
+ };
+
+ togglePrefersStatusBarHiddenButton.Command = new Command(() =>
+ {
+ var mode = On<iOS>().PrefersStatusBarHidden();
+ if (mode == StatusBarHiddenMode.Default)
+ On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.True);
+ else if (mode == StatusBarHiddenMode.True)
+ On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.False);
+ else
+ On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.Default);
+ });
+
+ togglePrefersStatusBarHiddenForPageButton.Command = new Command(() =>
+ {
+ var mode = page.On<iOS>().PrefersStatusBarHidden();
+ if (mode == StatusBarHiddenMode.Default)
+ page.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.True);
+ else if (mode == StatusBarHiddenMode.True)
+ page.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.False);
+ else
+ page.On<iOS>().SetPrefersStatusBarHidden(StatusBarHiddenMode.Default);
+ });
+
+ togglePreferredStatusBarUpdateAnimationButton.Command = new Command(() =>
+ {
+ var animation = page.On<iOS>().PreferredStatusBarUpdateAnimation();
+ if (animation == UIStatusBarAnimation.Fade)
+ page.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.Slide);
+ else if (animation == UIStatusBarAnimation.Slide)
+ page.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.None);
+ else
+ page.On<iOS>().SetPreferredStatusBarUpdateAnimation(UIStatusBarAnimation.Fade);
+ });
+
+ var restoreButton = new Button { Text = "Back To Gallery" };
+ restoreButton.Clicked += (sender, args) => restore.Execute(null);
+ content.Children.Add(restoreButton);
+ content.Children.Add(togglePrefersStatusBarHiddenButton);
+ content.Children.Add(togglePrefersStatusBarHiddenForPageButton);
+ content.Children.Add(togglePreferredStatusBarUpdateAnimationButton);
+ content.Children.Add(new Label
+ {
+ HorizontalOptions = LayoutOptions.Center,
+ Text = "Note: Setting the PrefersStatusBarHidden value on a TabbedPage applies that value to all its subpages."
+ });
+
+ page.Content = content;
+
+ return page;
+ }
+ }
+}