Сделайте общее представление, которое правильно выравнивает подвиды, как добавлено быстро

Я изо всех сил пытался понять это. В моем приложении мои пользователи могут рекламировать свои каналы, добавляя адреса социальных сетей в свою учетную запись. Во время viewDidLoad () я загружаю данные пользователя и определяю, какая кнопка социальной сети должна отображаться для этой учетной записи. Все различные кнопки, такие как Facebook, Instagram, Twitter, Pinterest, должны располагаться рядом, однако, если пользователь не ввел конкретный URL-адрес, соответствующая кнопка не должна отображаться. Итак, я ищу такое поведение:

Если только 1 кнопка (кнопка веб-сайта FX), тогда кнопка веб-сайта должна быть по центру в представлении. Если у пользователя есть две кнопки, то вид должен распределять два вида бок о бок вокруг центра. И так далее для третьей, четвертой и пятой кнопки. Я думал, что могу использовать UIStackview, чтобы добавить первую кнопку и расположить ее по центру, но UIStackView растягивает одно представление, и если в моем UIStackView есть две кнопки, они не выровнены по центру, вместо этого у них много интервалов. Большое спасибо всем, кто знает, как этого добиться.

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

Изменить * Добавлено изображение для видимости:  введите описание изображения здесь

Испытания: я последовал вашему совету и установил для просмотра стека соответствующее выравнивание и распределение, а также размер изображения, включая общие ограничения. Результат намного лучше, но, но расстояние огромно, они должны обнимать с небольшим расстоянием вокруг центра и большим расстоянием по бокам, см. Img:

общие ограничения:  введите описание изображения здесь

введите здесь описание изображения

Наилучшие пожелания,


person Ulrik. S    schedule 01.11.2017    source источник
comment
Я получил общую информацию о том, что вы хотите сделать, можете ли вы добавить к этому несколько картинок.   -  person Abdul Karim    schedule 01.11.2017
comment
@AbdulKarim Я добавил картинку, которую сделал быстро, я зарисовал. Простите за плохую графику. Но идея состоит в том, что если только один бит должен быть показан, он должен быть центрирован, если два они должны иметь интервал 10 пикселей и центрированы вместе вокруг центра. Если 3 btns, тогда середина должна быть полностью центрирована, а левая и правая btn на 10 пикселей до середины и так далее.   -  person Ulrik. S    schedule 01.11.2017
comment
вы хотите, чтобы это было правильно в следующем формате, и как вы в настоящее время получаете   -  person Abdul Karim    schedule 01.11.2017
comment
@AbdulKarim, я не совсем понимаю, о чем вы спрашиваете, извините. Если вы спрашиваете, должно ли оно выглядеть как на картинке, тогда да: P   -  person Ulrik. S    schedule 01.11.2017
comment
проверьте высоту и ширину всех значков (т. е. должны быть одинаковыми) и установите для свойства UIStackView значение «Выравнивание - заливка», «Распределение - равноправное заполнение», а для режима содержимого изображения - значение - aspectFit или центрировать по своему усмотрению.   -  person Abdul Karim    schedule 01.11.2017
comment
@AbdulKarim Я попытался выполнить ваш совет, я добавил изображения, вы получите тот же результат, что они должны быть сосредоточены вокруг середины.   -  person Ulrik. S    schedule 01.11.2017
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Abdul Karim    schedule 01.11.2017


Ответы (2)


Может быть достигнуто следующим образом:

  • использовать просмотр стека
  • заполнить поровну
  • постоянная ширина как минимум для одного элемента
  • stackview должен выровняться по центру по горизонтали в контейнере без ограничений по ведущему и замыкающему
  • stackview должен иметь фиксированное нижнее ограничение

введите здесь описание изображения

Радость

person Baig    schedule 01.11.2017
comment
Я пытался последовать твоему совету, хотя результат все еще не тот, к которому я стремился, получишь ли ты тот же результат, если я что-то делаю не так. Они должны были быть сосредоточены вокруг середины. - person Ulrik. S; 01.11.2017
comment
извините, он должен быть по центру по горизонтали в контейнере - person Baig; 01.11.2017
comment
Привет. Спасибо за комментарий, я не смог воспроизвести ваше предложение. Я выбрал обычный UIView и создал алгоритм, чтобы макет идеально подходил, хотя на его усовершенствование ушло несколько часов. Но тем не менее у меня есть алгоритм на будущее;) - person Ulrik. S; 01.11.2017

Используйте UIStackView и установите свойство «Равно равно», может работать.

введите здесь описание изображения

person Rishi Chaurasia    schedule 01.11.2017
comment
Спасибо за комментарий, но это все равно растягивает btn, если есть только один - person Ulrik. S; 01.11.2017
comment
Для этого используйте ограничения автоматического раскладки. придайте привязку к UIStackView, а ограничения по высоте и ширине - к кнопкам. это приспособится. - person Rishi Chaurasia; 01.11.2017