UISwitch的怪异故障与使用C#

时间:2018-11-01 15:01:23

标签: ios xamarin.ios uiscrollview autolayout uiswitch

我有ViewContoller,下面是视图层次结构(Cirrious.FluentLayout库,但是应该可以理解):

        _scrollView = new UIScrollView()
        {
            ShowsVerticalScrollIndicator = false
        };
        View.Add(_scrollView);

        _contentView = new UIView();
        _scrollView.Add(_contentView);


        View.AddConstraints(
            _scrollView.Below(VueNavBar),
            _scrollView.AtLeftOf(View),
            _scrollView.AtRightOf(View),
            _scrollView.AtBottomOf(View)
        );

        _scrollView.AddConstraints(_contentView.SameFrameAs(_scrollView));

然后我通过以下方式添加UISwitch:

var switch = new UISwitch();
_contentView.Add(switch);

设置约束后(我尝试了很多约束,其中许多绝对不是模棱两可),iOS为我呈现以下内容:

Bad Switch

这确实很奇怪,但是切换后变为:

Bad switch after toggling

也许有人对它为什么会发生有任何想法?

P.S .:我设法通过以相同的方式添加滚动视图来破坏其他页面上的开关,但是它们以不同的方式被破坏(其他类型的故障)。

1 个答案:

答案 0 :(得分:0)

我尝试了下面的代码,并且开关正常显示。

您无需定义UISwitch的宽度和高度。

public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            // Perform any additional setup after loading the view, typically from a nib.

            _scrollView = new UIScrollView()
            {
                ShowsVerticalScrollIndicator = false,
                BackgroundColor = UIColor.Blue
            };
            View.Add(_scrollView);

            this.View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();

            View.AddConstraints(
                _scrollView.AtTopOf(View,20),
                _scrollView.AtLeftOf(View,20),
                _scrollView.AtRightOf(View, 20),
                _scrollView.AtBottomOf(View, 20)
            );

            _contentView = new UIView();
            _contentView.BackgroundColor = UIColor.Orange;
            _scrollView.Add(_contentView);

            _scrollView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();

            _scrollView.AddConstraints(
             _contentView.WithSameTop(_scrollView),
             _contentView.WithSameLeft(_scrollView),
             _contentView.WithSameWidth(_scrollView),
              _contentView.WithSameHeight(_scrollView)
            );

            var switch1 = new UISwitch();
            _contentView.Add(switch1);
            _contentView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
            _contentView.AddConstraints(
                switch1.AtTopOf(_contentView, 80),
                switch1.AtLeftOf(_contentView, 20)
            );

        }

switch