AutoLayout не работает для моделей Plus - PullRequest
0 голосов
/ 12 мая 2018

В настоящее время я разрабатываю учебное приложение, первый контроллер представления отображает основные категории, а второй (почти как Pinterest) отображает несколько подкатегорий.Автоматическая разметка, которую я использовал, прекрасно работает на iPhone 6, 7, 8 и X, однако модели Plus немного искажены

. Так выглядит модель 6, 7, 8 и X *.1003 *

enter image description here

enter image description here

Однако, когда я запускаю его в моделях Plus, это выглядит следующим образом:

enter image description here

enter image description here

У меня есть следующий код автоматической разметки

Это автоматическое расположение соответствует первому контроллеру представления, я использую представление стека, чтобы высота ScrollView могла регулироваться в зависимости от содержимого представления стека.enter image description here

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

Как я могу сделать так, чтобы автоматический макет работал для моделей Plus?enter image description here

1 Ответ

0 голосов
/ 23 мая 2018

Я нашел вашу проблему:

Каждая кнопка имеет заголовок Button, и вы должны удалить заголовок по умолчанию. этот заголовок нажал на изображение кнопки, и из-за заголовка белого цвета вы его не видели.

Вы также можете управлять изображением UIButton s с помощью Control > Alignment section взгляда на скриншот, который я прикрепил.

enter image description here

Кстати, я рекомендую вам использовать UIImageView + UIButton поверх него вместо использования содержания изображения UIButton.

Редактировать

CollectionView совершенно беспорядок! Будет кушать много оперативки. У вас много клеток друг над другом.

enter image description here

кстати, похоже, что проблема с вашим вторым контроллером представления связана с stackviews, для которого не установлено ограничение.

    cell.addSubview(stackView)

    NSLayoutConstraint(item: stackView, attribute: .centerX, relatedBy: .equal, toItem: cell, attribute: .centerX, multiplier: 1, constant: 0).isActive = true
    NSLayoutConstraint(item: stackView, attribute: .centerY, relatedBy: .equal, toItem: cell, attribute: .centerY, multiplier: 1, constant: 0).isActive = true

Я только что отцентрировал одну из stackview и выяснил, что это связано с ограничением.

посмотрите на это как для установки Constraint программно: Swift | Добавление ограничений программно

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