Xamarin表格IOS - MKUserTrackingButton位置

问题描述 投票:1回答:2

我目前在我的Xamarin Forms中有一个自定义地图渲染器,用于每个平台的本地地图渲染器。

对于iOS,我正在尝试添加跟踪按钮以回到当前位置。

我有代码来创建按钮:

   var button = MKUserTrackingButton.FromMapView(Map);
            button.Layer.BackgroundColor = UIColor.White.CGColor;
            button.Layer.BorderColor = UIColor.FromRGB(211, 211, 211).CGColor;
            button.Layer.BorderWidth = 1;
            button.Layer.CornerRadius = 5;
            button.TranslatesAutoresizingMaskIntoConstraints = false;
            Map.AddSubview(button);

但我需要将它移到右下角(见下图)

enter image description here

所以我只需要代码行来移动MAP视图中的按钮:)

c# ios xamarin xamarin.forms xamarin.ios
2个回答
2
投票

如果要使用Frame更改Control的位置。你应该删除button.TranslatesAutoresizingMaskIntoConstraints = false;。此代码将禁用Frame,并使用autoLayout来放置控件。

您也可以尝试使用autoLayout:

button.TopAnchor.ConstraintEqualTo(Map.TopAnchor, 100).Active = true;
button.LeadingAnchor.ConstraintEqualTo(Map.LeadingAnchor, 100).Active = true;
button.WidthAnchor.ConstraintEqualTo(52).Active = true;
button.HeightAnchor.ConstraintEqualTo(44).Active = true;

1
投票

这也将在右下方显示跟踪按钮。请注意,这仅适用于iOS 11及更高版本,因此请务必同时检查设备。

    if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
        {
            var button = MKUserTrackingButton.FromMapView(map);
            button.Layer.BackgroundColor = UIColor.White.CGColor;
            button.Layer.BorderColor = UIColor.FromRGB(0, 0, 127).CGColor;
            button.Layer.BorderColor = UIColor.White.CGColor;
            button.Layer.BorderWidth = 1;
            button.Layer.CornerRadius = 5;
            button.TranslatesAutoresizingMaskIntoConstraints = false;
            View.AddSubview(button); 
            NSLayoutConstraint.ActivateConstraints(new NSLayoutConstraint[]{
                button.BottomAnchor.ConstraintEqualTo(View.BottomAnchor, -10),
                button.TrailingAnchor.ConstraintEqualTo(View.TrailingAnchor, -10)
            });
        }
© www.soinside.com 2019 - 2024. All rights reserved.