Xamarin.iOS中具有设计时属性的自定义控件/UIWiew

本文关键字:属性 自定义控件 UIWiew iOS Xamarin | 更新日期: 2023-09-27 18:01:12

我正在为iOS应用程序创建用户界面,我正在寻找创建可重复使用的自定义控件的正确方法。我在运行应用程序时通常可以使用它,但在设计时设置我的"导出"属性在设计器中没有可见的效果。我认为我做了一些根本错误的事情,所以也许有人可以给我指导

我在做什么:

  • 我已经创建了UIControl的子类
  • 在构造函数中,我调用了一个Initialize方法
  • Initialize方法中,我添加了几个子视图和约束,以便在我的控制范围内进行布局

以下是一些显示上述内容的空心代码:

  [Register("RangedValueSelector"), DesignTimeVisible(true)]
public sealed class RangedValueSelector : UIControl
{  
    public RangedValueSelector(IntPtr p)
            : base(p)
    {
        Initialize();
    }
    public RangedValueSelector()
    {
        Initialize();
    }
    public int HorizontalButtonSpacing
    {
        get { return _horizontalButtonSpacing; }
        set
        {
            _horizontalButtonSpacing = value;
        }
    }

    [Export("LabelBoxVerticalInset"), Browsable(true)]
    public int LabelBoxVerticalInset
    {
        get
        {
            return _labelBoxVerticalInset;
        }
        set
        {
            _labelBoxVerticalInset = value;
        }
    }
      private void Initialize()
    {
        //Code that creates and add Subviews
        //Code that creates and add the required constraints, some of which should depend on the design time properties
    }
}

因此,如果我通过设计器设置导出的属性,则控件工作得非常好,但它们在设计器本身中不会立即产生效果。

建议采用什么方法使设计时可设置的属性更改约束值?我希望避免每次代码或设计器中有人设置属性时都必须重新创建所有子视图。

Xamarin.iOS中具有设计时属性的自定义控件/UIWiew

您缺少设计器使用的RectangleF构造函数。

public RangedValueSelector(RectangleF边界(:base(边界({}

其余的似乎是正确的。