【问题标题】:Xamarin Forms IOS - MKUserTrackingButton positionXamarin Forms IOS - MKUserTrackingButton 位置
【发布时间】:2018-03-17 14:23:22
【问题描述】:

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

对于 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);

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

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

【问题讨论】:

  • 设置按钮的 Frame 以指定相对于父级的位置
  • 此代码button.Frame = new RectangleF(100, 100, 52, 44); 不起作用

标签: c# ios xamarin xamarin.forms xamarin.ios


【解决方案1】:

如果你想使用 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;

【讨论】:

    【解决方案2】:

    这也会在右下角提供跟踪按钮。请注意,这仅适用于 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)
                });
            }
    

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 1970-01-01
      • 2019-01-25
      • 2017-07-07
      • 2018-05-01
      • 1970-01-01
      • 2021-12-30
      • 2018-02-24
      • 1970-01-01
      相关资源
      最近更新 更多