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

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

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

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

Верх — контейнер, середина — коллекция, а низ — uitableview. Что я пытаюсь сохранить, так это соотношение сторон. Моя мысль сделать это была следующей:

  1. Для первого поля установите начальное, конечное и верхнее поля так, чтобы они соответствовали контейнеру (руководству). Установите нижнее поле как поле ниже (большое среднее поле). Также установите соотношение сторон.
  2. Для среднего поля установите начальные/конечные поля в соответствии с направляющими и установите нижнее поле в поле ниже. Также установите соотношение сторон.
  3. Для последнего поля установите начало, конец, низ (по направляющей), а также соотношение сторон.
  4. Я также установил одинаковую ширину штифта

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

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x7f8a66031bc0 V:[UITableView:0x7f8a65837c00(73)]>",
    "<NSLayoutConstraint:0x7f8a6605c150 UITableView:0x7f8a65837c00.width == 7.78082*UITableView:0x7f8a65837c00.height>",
    "<NSLayoutConstraint:0x7f8a6604e970 UICollectionView:0x7f8a65838400.leading == UIView:0x7f8a66031eb0.leadingMargin>",
    "<NSLayoutConstraint:0x7f8a6604e9c0 UICollectionView:0x7f8a65838400.trailing == UIView:0x7f8a66031eb0.trailingMargin>",
    "<NSLayoutConstraint:0x7f8a6604ea10 UICollectionView:0x7f8a65838400.width == UITableView:0x7f8a65837c00.width>",
    "<NSLayoutConstraint:0x7f8a63c4ccf0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7f8a66031eb0(320)]>"
)

Спасибо большое!

27.11.2014

  • Вы не можете сохранить пропорции всех видов, когда сами устройства имеют разные пропорции. Вы можете установить пропорцию высоты для каждого вида. Или вы можете установить соотношение сторон для двух представлений и позволить третьему изменить соотношение сторон, чтобы использовать все оставшееся пространство. 28.11.2014

Ответы:


1

Скажем, вы хотите, чтобы высота вида сверху составляла 20% от основного вида, а высота среднего вида составляла 50% от основного вида. Вы можете сделать это программно следующим образом:

[topView setTranslatesAutoresizingMaskIntoConstraints: NO];
[middleView setTranslatesAutoresizingMaskIntoConstraints: NO];
[bottomView setTranslatesAutoresizingMaskIntoConstraints: NO];

NSDictionary *views = @{@"topView": topView, @"middleView": middleView, @"bottomView": bottomView};

[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|[topView]|" options: 0 metrics: nil views: views]];
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|[middleView]|" options: 0 metrics: nil views: views]];
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|[bottomView]|" options: 0 metrics: nil views: views]];

[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[topView][middleView][bottomView]|" options: 0 metrics: nil views: views]];

[self.view addConstraint: [NSLayoutConstraint constraintWithItem: topView attribute: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeHeight multiplier: 0.2f constant: 0.0f]];
[self.view addConstraint: [NSLayoutConstraint constraintWithItem: middleView attribute: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeHeight multiplier: 0.5f constant: 0.0f]];

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

Если вы хотите сделать это в Interface Builder, вы можете сделать это следующим образом:

  1. Для верхнего поля добавьте в суперпредставление ограничения «Ведущий», «Конечный» и «Верхний». Кроме того, добавьте ограничение «Равные высоты» в суперпредставление и измените множитель на требуемое значение (см. последнее изображение).
  2. Для среднего поля добавьте ограничения «Ведущий» и «Конечный» в суперпредставление. Добавьте ограничение «Верх» в верхнее поле. Кроме того, добавьте ограничение «Равные высоты» в супервизор и измените множитель на требуемое значение.
  3. Для последнего поля добавьте в суперпредставление ограничения «Ведущий», «Конечный» и «Нижний». Добавьте ограничение «Верх» в среднее поле.


    Ограничения


    Просмотреть макет


    Вот как вы можете установить ограничение по высоте с помощью супервизора.
28.11.2014
Новые материалы

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

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

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

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

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

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

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