Nano Hash - криптовалюты, майнинг, программирование

Можно ли динамически строить макет?

У меня есть представление для контакта. Основываясь на контактной информации, которую предоставляет пользователь, я хотел бы либо включить метки, если информация доступна, либо не занимать место, если информация недоступна, чтобы избежать множества полей, таких как тел: электронная почта: и т. д., которые пусты,

Страница выложена в раскадровке. Есть ли способ, чтобы метка не занимала место, если она пуста или иным образом динамически создает страницу?

Я думал о [label sizeToFit];, но это все еще оставляет по крайней мере одну пустую строку для метки.

Редактировать: показывает вертикальное ограничение, установленное на 10.f и 0.f. Изображение сжимается, но не занимаемое им пространство.

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

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



Ответы:


1

Для этого можно использовать ограничения.

Программное создание расширенного макета очень сложно и подвержено ошибкам, но с помощью параметров автоматического макета вы можете это сделать.

Например, у вас есть UILabel, и иногда вы хотите удалить его из макета. Таким образом, вы можете сделать ссылку на ограничение высоты и ширины этого UILabel и изменить его, как показано ниже:

widthConstraint.constant  = 0.0f;
heightConstraint.constant = 0.0f;

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

--- Отредактировано---

Для вступления в силу вы должны вызвать [self needsUpdateConstraints]; после изменения ограничения.

04.10.2015
  • Как вы устанавливаете ограничения для метки? 04.10.2015
  • В Interface Builder вы можете использовать режим помощника редактора (Interface Builder с VC) и опцию перетаскивания выбранного ограничения в свой код. Так что манипулируйте им. 04.10.2015
  • Это сужает визуальное пространство, но оставляет пустое пространство. Есть ли способ устранить пустое пространство, чтобы весь вид рухнул. 04.10.2015
  • У меня нет вашей проблемы, но с правильным назначением ограничений вы можете делать все. Можете ли вы отправить изображение из вашей проблемы? 04.10.2015
  • Например, я установил ограничение по высоте на изображение. Когда я изменил его на 0 в коде, изображение исчезло, но место, где оно было, осталось. Пробовал то же самое с лейблом. Я не очень хорошо разбираюсь в ограничениях. 04.10.2015
  • Спасибо, отредактировано содержание ответа! 04.10.2015
  • Вероятно, есть другое ограничение, с которым я должен работать, но размещение ограничения на визуальном элементе, а затем изменение высоты не меняет пространство. 04.10.2015
  • Если ваша метка вертикального позиционирования o: связана с изображением (например, вертикальный интервал между ними), тогда это должно работать. Но если эта позиция метки не связана с изображением, тогда ее поведение правильное. O: Позиция Y должна быть связана с изображением. Если нет, измените его вертикальное расстояние. 04.10.2015
  • В порядке. Отмеченный ответ правильный. Похоже, мне приходится играть с ограничениями, чтобы все они были связаны. 04.10.2015

  • 2

    Если вы ориентируетесь на iOS9+, решением вашей проблемы является представление стека. https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/

    Здесь вы найдете краткое введение: https://developer.apple.com/videos/play/wwdc2015-218/

    Он будет обрабатывать все макеты для вас, основываясь на том, какие взгляды вы даете или принимаете.

    Z.

    04.10.2015
  • Это выглядит великолепно, но я не нацелен на 9. 04.10.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..