Странный сбой UISwitch, связанный с UIScrollView на iOS с C # - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть 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 голосов
/ 02 ноября 2018

Я попробовал приведенный ниже код, и переключатель отображается нормально.

И вам не нужно определять ширину и высоту 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

...