Quantcast
Channel: Xamarin.Forms — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 89864

Weird anchor behavior when setting HeightRequest and scaling (possible bug - iOS only)

$
0
0

If the anchor of an element is set to 0 and then the HeightRequest (or WidthRequest) is changed before or after scaling, the position is off.

Example

Take a look at the below screen shot. The boxes are identical except that red box needs the height to be set to 160.

This is the xaml:

    <AbsoluteLayout
        Margin="20">
        <Frame
            HeightRequest="160"
            WidthRequest="160"
            BorderColor="Black"
            CornerRadius="0"
            TranslationX="99"
            Padding="1" />

        <BoxView
            x:Name="rightBox"
            AnchorX="0"
            AnchorY="0"
            HeightRequest="160"
            WidthRequest="160"
            TranslationX="100"
            TranslationY="1"
            Color="Green" />



        <Frame
            HeightRequest="160"
            WidthRequest="160"
            BorderColor="Black"
            CornerRadius="0"
            TranslationY="200"
            TranslationX="100"
            Padding="1" />

        <BoxView
            x:Name="wrongBox"
            AnchorX="0"
            AnchorY="0"
            HeightRequest="150"
            WidthRequest="160"
            Color="Red"
            TranslationY="201"
            TranslationX="101" />

        <Button Text="Invoke"
                Clicked="HandleButton"
                TranslationY="400" />

    </AbsoluteLayout>

When tapping the "invoke" button we want to scale both elements to 0.5.
It will trigger this code:

void HandleButton (Object sender, EventArgs e)
{
    rightBox.Scale = 0.5;
    wrongBox.HeightRequest = 160;
    wrongBox.Scale = 0.5;
}

This is the result:

I would expect the red button to be inside the frame like the green box.

It looks like the anchoring is ignored. Even if I set the anchor to zero (again) and set the translation again I get the same result.

This only happens on iOS. On Android I get the expected result.

How do prevent this from happening and get the red box correctly positioned inside the frame?


Viewing all articles
Browse latest Browse all 89864

Trending Articles