diff options
Diffstat (limited to 'Xamarin.Forms.Controls/GalleryPages/PlatformSpecificsGalleries')
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; + } + } +} |