Проблемы со Swift, Auto Layout и стеками - PullRequest
0 голосов
/ 10 ноября 2018

Я работал над приложением с сеткой кнопок. Сетка состоит из 4 кнопок на строку и (в настоящее время) 6 строк. В раскадровке каждый ряд кнопок находится в горизонтальном представлении стека, а все 6 представлений стека - в вертикальном представлении стека.

Я не хочу, чтобы все кнопки были видны постоянно, поэтому я включаю и выключаю их с помощью .isHidden. Это вызывает некоторые проблемы при запуске приложения в симуляторе:

  1. Я хочу, чтобы все кнопки оставались одинакового размера, но если одна или несколько кнопок в данном представлении строки / стека скрыты, остальные кнопки в этом ряду изменяют свои размеры, чтобы заполнить строку. Я предполагаю, что комбинация ограничений на кнопки и настройки в представлении стека решит эту проблему, но я еще не нашел правильную комбинацию.

  2. Если я начну с, скажем, первых трех рядов кнопок, которые все скрыты, а затем попытаюсь показать кнопку в одной из других строк, все кнопок исчезнут. Однако, если я «печатаю» состояние .isHidden каждой кнопки, то те, которые должны быть видны, имеют .isHidden = false.

Есть идеи для решения любой из этих проблем?

Заранее благодарим за любую помощь.

1 Ответ

0 голосов
/ 14 ноября 2018

Чтобы ответить на ваш первый вопрос ...

Когда вы скрываете представление в UIStackView, автоматическое расположение обрабатывает его так, как будто оно «пропало» - представление стека перекомпоновывает свое arrangedSubviews так, как если бы это представление никогда не существовало с самого начала. .

Если вы хотите этот результат:

enter image description here

Лучше всего установить для свойства .alpha этого вида / кнопки значение 0. Он будет полностью невидимым (то есть фактически «скрытым»), и представление стека сохранит свой текущий макет. И элементы управления с .alpha = 0 не реагируют на прикосновения (поэтому вы не можете нажать невидимую кнопку).

Что касается вашего второго вопроса, я бы порекомендовал вам опубликовать этот вопрос самостоятельно. Убедитесь, что вы используете код, который не дает желаемого результата.

См .: Как спросить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...