我的问题是,将提供给属性的字符串值(比如使用MvvmCross或仅仅是iOS设计器的绑定)分配给标签的.text属性的最佳位置是什么?
我知道当我覆盖Draw(CGRect rect)方法并在此处分配值(并在属性值更改时调用SetNeedsdisplay()方法)它将起作用.然而,调用Draw(CGRect rect)对我来说听起来不对.任何帮助,将不胜感激.
目前我有以下代码:
[Register("MenuheaderVIEw"),DesignTimeVisible(true)]public class MenuheaderVIEw : UIVIEw{ private const int _margin = 5; private UILabel _Title; private UILabel _subTitle; public MenuheaderVIEw() { Initialize(); } public MenuheaderVIEw(CGRect frame) : base(frame) { Initialize(); } public MenuheaderVIEw(IntPtr p) : base(p) { Initialize(); } [Export("Title"),browsable(true)] public string Title { get; set; } [Export("SubTitle"),browsable(true)] public string SubTitle { get; set; } private voID Initialize() { autoresizingMask = UIVIEwautoresizing.FlexibleDimensions; // Create 'Title' label _Title = new UILabel() { Backgroundcolor = UIcolor.Clear,Font = UIFont.BoldSystemFontOfSize(UIFont.SystemFontSize),TextAlignment = UITextAlignment.left,Textcolor = UIcolor.White,Text = "Verbeterapp",TranslatesautoresizingMaskIntoConstraints = false }; // Create 'SubTitle' label _subTitle = new UILabel() { Backgroundcolor = UIcolor.Clear,Font = UIFont.SystemFontOfSize(UIFont.SystemFontSize),Text = "JCI",TranslatesautoresizingMaskIntoConstraints = false }; this.AddSubvIEws(new UIVIEw[] { _Title,_subTitle }); SetNeedsUpdateConstraints(); } public overrIDe voID UpdateConstraints() { if (NeedsUpdateConstraints()) SetupContraints(); base.UpdateConstraints(); } private voID SetupContraints() { var constraints = new List<NSLayoutConstraint>(); var vIEwMetrics = new Object[] { "TitleLabel",_Title,"subTitleLabel",_subTitle,"margin",_margin }; constraints.AddRange( NSLayoutConstraint.FromVisualFormat( "V:[TitleLabel]-margin-[subTitleLabel]",NSLayoutFormatoptions.AlignAllLeading,vIEwMetrics ) ); constraints.Add( NSLayoutConstraint.Create ( _Title,NSLayoutAttribute.left,NSLayoutRelation.Equal,this,1,8 ) ); constraints.Add ( NSLayoutConstraint.Create( _Title,NSLayoutAttribute.CenterY,-_subTitle.Frame.Height ) ); AddConstraints(constraints.ToArray()); }}解决方法 总之:它取决于您的要求(一个平台的小应用程序/原型或多个平台的更大应用程序).因此,您的问题有点基于意见.
你想只分配一次文本吗?然后转到Designer或在代码中设置Text属性.剩下的问题是,您使用每个支持的平台复制文本值.你必须在iOS,AndroID,UWP,windows Phone中设置它……如果你想改变它,那就太痛苦了.
我更喜欢与MvvMCross进行数据绑定.我们几乎在每个项目中使用MvvMCross(从3年开始),因为它提供了严格的视图,数据和服务分离(使用IoC,MvvM,数据绑定,插件,viewmodel到viewmodel导航等现代方法)和很多抽象特定元素.数据绑定机制允许您无任何痛苦地更改查看的值.如果要更改静态字符串,则只需执行一次.如果你是Xamarin,Mobile和/或MvvM的新手,它当然会增加一个可能难以理解的额外级别,但它是完全值得的.
总结以上是内存溢出为你收集整理的Xamarin iOS自定义视图全部内容,希望文章能够帮你解决Xamarin iOS自定义视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)