Вам нужно создать переменную
var leftCon:NSLayoutConstraint!
, а затем изменить ее, проблема в том, что каждая строка создает новое ограничение
sparkleView.widthAnchor.constraint(equalToConstant: frame.width / 5).isActive = true
sparkleView.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
sparkleView.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true
примечание: выше 3 ограничений создают конфликт, поскольку представление не может быть закреплено влево и вправо одновременно с ограничением ширины, поэтому вы видите конфликт перерыв => NSLayoutConstraint: 0x6000020b8eb0 UIView: 0x7fc846d551d0.width == 15.35 (активный)
blockquote >независимо от активного назначения, поэтому эти
sparkleView.leftAnchor.constraint(equalTo: leftAnchor).priority = UILayoutPriorityDefaultLow // Doesn't work sparkleView.leftAnchor.constraint(equalTo: leftAnchor).isActive = false // Doesn't work
находятся на лету и не изменяют созданное ограничение, так что это будет
leftCon = sparkleView.leftAnchor.constraint(equalTo: leftAnchor) leftCon.isActive = true
Относительно этого crash
'Изменение приоритета от обязательного к отсутствию установленного ограничения (или наоборот) не поддерживается
blockquote>вам необходимо установить приоритет перед активацией
leftCon.priority = UILayoutPriorityDefaultLow leftCon.isActive = true
Я не вижу явных оснований, почему Вы не должны делать этого этот путь. В конце концов, не каждый веб-сайт выделен просто единственной задаче или приложению. Другой подход должен был бы использовать субдомены, как:
app1.mydomain.com
app2.mydomain.com
Yahoo и Google оба использования они, например. Подход папки является хорошим способом разбудить вещи и работающий за тестированием все же.
Одна причина состоит в том, если Вы хотели поддерживать соединения SSL со своим веб-сервером.
При использовании основанного на папке подхода затем, у Вас нет проблемы с сертификатами SSL.
Если Вы пойдете для метода субдомена (app1.mydomain.com, app2.mydomain.com, то и т.д.) Вам, вероятно, будет нужен подстановочный сертификат SSL, который будет более дорогим, или несколько сертификатов.
Не проблема, если Вы не нуждаетесь в SSL или имеете немного приложений, которые требуют его.
Вы не упоминаете технологии, но если Вы, окажется, будете использовать Java для этого, то веб-приложения (по умолчанию) не будут делиться никакой информацией сессии. Это может особенно быть проблемой, если Вы хотите, чтобы пользователь вошел в систему одного веб-приложения и также зарегистрирован к другому веб-приложению.
Некоторые контейнеры (Tomcat, Glassfish) имеют единую точку входа в наличии как реализацию определенная функция.
Просто к вашему сведению некоторых разветвлений решения.
Единственный недостаток к тому подходу - то, что необходимо будет поместить некоторое перенаправление или проксирование реверса, если какое-либо из приложений закончит тем, что переместилось в другой сервер, тогда как с субдоменом необходимо было бы просто изменить запись для movedapp.domain.com.
Так, чтобы заставить его соответствовать требованиям завтрашнего дня, я создал бы субдомены.
Если приложения все связаны с доменом, я не вижу проблемы с выполнением вещей этот путь.
Мой обычный подход должен был бы рассматривать сайт как служение единственной цели. "Единственный" на самом деле определяет широкую цель и шаблон использования здесь. Если несколько приложений, в которые все вписываются вместе и синергетически работают для единственной цели сайта, то
mydomain.com/app1 и mydomain.com/app2 прекрасны довольно.
Это означает, что они существуют и живут для увеличения основного сайта.
Если приложения не имеют ничего особенного, чтобы сделать друг с другом и в значительной степени жить в их "собственном мире", затем они, вероятно, должны существовать как их собственные субдомены.
app1.mydomain.com и app2.mydomain.com
это позволяет Вам устанавливать свою стратегию DNS к различным IP-адресам (веб-серверы/фермы) вместо того, чтобы сгруппировать их вместе в том же пуле.