diff options
author | Stephane Delcroix <stephane@delcroix.org> | 2016-10-11 20:34:18 +0200 |
---|---|---|
committer | Stephane Delcroix <stephane@delcroix.org> | 2016-10-11 20:34:18 +0200 |
commit | ec81d3f32af7636a2b90484b1d9c8138c346303a (patch) | |
tree | 76c6dea0b7435705b3c5ec63675b9624018f8841 | |
parent | d5f4aeb4745e0b1e171275b7311b9e7a8d98d02d (diff) | |
parent | d34dcf2cbc9dec01c806b64707bbf99c8c58cc8a (diff) | |
download | xamarin-forms-ec81d3f32af7636a2b90484b1d9c8138c346303a.tar.gz xamarin-forms-ec81d3f32af7636a2b90484b1d9c8138c346303a.tar.bz2 xamarin-forms-ec81d3f32af7636a2b90484b1d9c8138c346303a.zip |
Merge branch 'adrianknight89-ios-scrolltoposition'
3 files changed, 55 insertions, 1 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla44461.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla44461.cs new file mode 100644 index 00000000..c0937a8f --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla44461.cs @@ -0,0 +1,49 @@ +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +namespace Xamarin.Forms.Controls +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 44461, "ScrollToPosition.Center works differently on Android and iOS", PlatformAffected.iOS)] + public class Bugzilla44461 : TestContentPage + { + protected override void Init() + { + var grid = new Grid + { + RowSpacing = 0, + }; + + var scrollView = new ScrollView + { + Orientation = ScrollOrientation.Horizontal, + VerticalOptions = LayoutOptions.Center, + BackgroundColor = Color.Yellow, + HeightRequest = 50 + }; + grid.Children.Add(scrollView); + + var stackLayout = new StackLayout + { + Orientation = StackOrientation.Horizontal, + Spacing = 20 + }; + + for (var i = 0; i < 10; i++) + { + var button = new Button + { + Text = "Button" + i + }; + button.Clicked += (sender, args) => + { + scrollView.ScrollToAsync(sender as Button, ScrollToPosition.Center, true); + }; + + stackLayout.Children.Add(button); + } + scrollView.Content = stackLayout; + Content = grid; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index a1dd9b44..5e188ba8 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -127,6 +127,7 @@ <Compile Include="$(MSBuildThisFileDirectory)Bugzilla42519.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla43516.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla44166.cs" /> + <Compile Include="$(MSBuildThisFileDirectory)Bugzilla44461.cs" /> <Compile Include="$(MSBuildThisFileDirectory)CarouselAsync.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla34561.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla34727.cs" /> @@ -584,4 +585,4 @@ <Generator>MSBuild:UpdateDesignTimeXaml</Generator> </EmbeddedResource> </ItemGroup> -</Project>
\ No newline at end of file +</Project> diff --git a/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs index b2107db7..3d38bb6b 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/ScrollViewRenderer.cs @@ -196,6 +196,10 @@ namespace Xamarin.Forms.Platform.iOS else { var positionOnScroll = Controller.GetScrollPositionForElement(e.Element as VisualElement, e.Position); + + positionOnScroll.X = positionOnScroll.X.Clamp(0, ContentSize.Width - Bounds.Size.Width); + positionOnScroll.Y = positionOnScroll.Y.Clamp(0, ContentSize.Height - Bounds.Size.Height); + switch (ScrollView.Orientation) { case ScrollOrientation.Horizontal: |