首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.iOS -自定义UIPopoverBackgroundView

Xamarin.iOS -自定义UIPopoverBackgroundView
EN

Stack Overflow用户
提问于 2014-02-05 19:43:12
回答 1查看 605关注 0票数 1

我需要使用iOS 6+使用Xamarin.iOS实现自定义弹出。

到目前为止,除了关闭默认阴影之外,一切都在正常工作。以下是我的实现:

代码语言:javascript
复制
    public class PopoverBackgroundView : UIPopoverBackgroundView
    {
        private UIImageView _arrow, _background;

        public override float ArrowOffset { get; set; }

        public override UIPopoverArrowDirection ArrowDirection { get; set; }

        [Export ("arrowHeight")]
        static new float GetArrowHeight()
        {
            return 39;
        }

        [Export ("arrowBase")]
        static new float GetArrowBase()
        {
            return 80;
        }

        [Export ("contentViewInsets")]
        static new UIEdgeInsets GetContentViewInsets()
        {
            return new UIEdgeInsets (25, 25, 25, 25);
        }

        [Export("wantsDefaultContentAppearance")]
        static new bool WantsDefaultContentAppearance
        {
            get { return false; }
        }

        public PopoverBackgroundView(IntPtr handle) : base (handle)
        {
            _background = new UIImageView { Image = Theme.PopoverBackgroundImage };
            _arrow = new UIImageView { Image = Theme.PopoverArrowImage };

            AddSubview(_background);
            AddSubview(_arrow);
        }

        public override void LayoutSubviews()
        {
            base.LayoutSubviews();

            var arrowFrame = new RectangleF(Frame.Width - GetArrowBase(), -14, GetArrowBase(), GetArrowHeight());
            _arrow.Frame = arrowFrame;

            var backgroundFrame = Frame;
            backgroundFrame.X = 
                backgroundFrame.Y = 0;
            _background.Frame = backgroundFrame;
        }
    }

这个类非常奇怪,因为您必须“覆盖”静态Objective值。在C#中这样做的唯一方法是声明一个static new成员并添加Export属性。

除了从未被调用的WantsDefaultContentAppearance之外,一切都正常工作。根据苹果的文档这里,它将禁用弹出窗口上的默认阴影。有人和Xamarin.iOS合作过吗?我认为这可能是一个Xamarin错误,因为所有的方法都可以正常工作,而这个方法恰好是一个属性。该类中的方法似乎被定义为该类中的“故意”方法,因为它们作为属性看起来要漂亮得多。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-06 19:04:58

我不认为这是一个Xamarin错误,但iOS API只是不适合我。

为了解决这个问题,我的设计师把他的阴影从图像中取下来,我们只保留默认的阴影。

老实说,我觉得这样做更好,因为苹果花了时间做了一个很好的阴影--为什么要删除它呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21586947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档