Я экспериментирую с использованием UIScrollView. После долгих неприятностей я, наконец, понял это. Но теперь я, кажется, ударил еще одну загвоздку.Установочные ограничения программно
В этом простом приложении у меня есть вид прокрутки и для его работы, я должен установить нижнее пространство представления для ограничения прокрутки в 0, как описано here, и он отлично работает. Я делаю это через IB.
Теперь я столкнулся с сценарием, где я должен делать эту часть программно. Я добавил код ниже в методе viewDidLoad
.
NSLayoutConstraint *bottomSpaceConstraint = [NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.scrollView
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0.0];
[self.view addConstraint:bottomSpaceConstraint];
Но это не работает. Он выводит следующее сообщение в окне консоли, и я не знаю, что с ним делать.
Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте это: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации по translatesAutoresizingMaskIntoConstraints собственности UIView) ( «», «» )
Может кто-то пожалуйста, скажите мне, как это сделать это? Я также приложил демо-проект here, чтобы вы могли лучше понять проблему.
UPDATE:
Во-первых спасибо за ответы. Используя способы, упомянутые в ответах, я смог заставить его работать. Однако в немного другом сценарии его нет. Теперь я пытаюсь загрузить представление на viewcontroller программно.
Если я могу объяснить далее. Есть 2 контроллера вида. Первый - UITableViewController
, а второй - UIViewController
. Внутри это UIScrollView
. Также есть несколько UIView
s, а высота некоторых видов превышает нормальную высоту экрана.
UITableViewController
отображает список вариантов. Основываясь на выборе пользователя, конкретный UIView
из партии будет загружен в UIViewController
с помощью UIScrollView
.
В этом случае вышеуказанный метод не работает. Прокрутки не происходит. Должен ли я делать что-то другое, так как я загружаю просмотр отдельно?
Я загрузил демонстрационный проект here, чтобы вы могли видеть его в действии. Пожалуйста, смотрите Email.xib
и выберите Email из списка таблиц.
Привет Роб, спасибо за res Понс. Я обновил существующее ограничение и отлично работает. Однако теперь я пытаюсь загрузить представление из отдельного 'UIView', а затем его не работает. Должен ли я делать что-то другое в этом случае? Я обновил свой вопрос. – Isuru
@ Isuru Я прошел через ваш проект и получил много комментариев, поэтому см. Мой пересмотренный ответ. Кроме того, если вы загружаете мои примеры проектов, которые упрощают выдачу исходной кодовой базы, вы увидите дополнительные комментарии в исходном коде. – Rob
Привет, Роб, большое спасибо за все это. Это определенно один из лучших ответов, которые я получил за вопрос. Я прошел через оба проекта и многому научился. Мне 4 месяца в iOS, поэтому я новичок в некоторых вещах, но все это хорошо. Причина, по которой я хотел использовать xib-файлы, - это то, что я работаю над этим приложением на работе, и пожилые люди настаивали на использовании одного 'UIViewController' и имеют файлы типа UI и _templates_ nib для почтового типа, потому что их проще управлять, поскольку мы уже имеем много сцен, лежащих вокруг. – Isuru