Я создал пользовательский элемент управления с Xamarin.iOS после следующего руководства: https://developer.xamarin.com/recipes/ios/general/templates/using_the_ios_view_xib_template/Xamarin.iOS пользовательский элемент управления не учитывает ограничение высоты
Однако, когда я использую контроль над одной из моих взглядов, он игнорирует высоту и правильные ограничения автоматической компоновки, назначенные мне во время выполнения, во время разработки все выглядит хорошо. (ограничения устанавливаются с помощью конструктора).
код моего пользовательского элемента управления выглядит следующим образом:
using Foundation;
using System.ComponentModel;
using UIKit;
using System;
using CoreGraphics;
namespace RidderCRM.iOS
{
[DesignTimeVisible(true)]
public partial class RidderDetailBigToSmall : UIView, IComponent
{
public RidderDetailBigToSmall(IntPtr handle) : base(handle)
{
}
#region IComponent implementation
public ISite Site { get; set; }
public event EventHandler Disposed;
#endregion IComponent implementation
#region Icon properties
[Export("Icon"), Browsable(true)]
public UIImage Icon { get; set; }
#endregion Icon properties
#region Title properties
[Export("Title"), Browsable(true)]
public string Title { get; set; }
[Export("TitleColor"), Browsable(true)]
public UIColor TitleColor { get; set; }
#endregion Title properties
#region Subtitle properties
[Export("Subtitle"), Browsable(true)]
public string Subtitle { get; set; }
[Export("SubtitleColor"), Browsable(true)]
public UIColor SubtitleColor { get; set; }
#endregion Subtitle properties
public override CGSize IntrinsicContentSize
{
get { return new CGSize(NoIntrinsicMetric, 56f); }
}
public new static bool RequiresConstraintBasedLayout()
{
return true;
}
public override void AwakeFromNib()
{
base.AwakeFromNib();
if ((Site != null) && Site.DesignMode)
{
// Bundle resources aren't available in DesignMode
return;
}
NSBundle.MainBundle.LoadNib("RidderDetailBigToSmall", this, null);
// At this point all of the code-behind properties should be set, specifically rootView which must be added as a subview of this view
this.AddSubview(this.RootView);
this.TitleLabel.Text = Title;
this.TitleLabel.TextColor = TitleColor;
this.SubtitleLabel.Text = Subtitle;
this.SubtitleLabel.TextColor = SubtitleColor;
this.IconImageView.Image = Icon;
}
}
}
Вот скриншот управления, размещенного на взгляд на время разработки после и скриншот применяемых ограничений (обратите внимание на этикетки и значок не показывать, но я прочитал это ожидаемое поведение):
Вот скриншот представления, содержащего мой пользовательский элемент управления во время выполнения (обратите внимание, что управление будет занимать все пространство в нижней части окна):
Любая помощь будет принята с благодарностью.