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

iOS / Swift: не позволяйте глобальному панорамированию сбрасывать позиции других объектов с включенным AutoLayout?

Только начал изучать Swift, следуя прекрасному руководству по UIGestureRecognizer на сайте Рэя Вендерлиха. У него есть два изображения, которые вы можете перемещать (панорамировать), масштабировать (сжимать) и вращать. Работает отлично.

Но затем я попытался расширить его, добавив распознаватель жестов панорамирования в основной вид, чтобы я мог панорамировать всю «сцену» одновременно. Подключил его к ViewController так же, как два изображения. Это работает, но каждый раз, когда вы перемещаетесь в главном окне, оно сбрасывает положение других объектов, т. е. они возвращаются туда, где они были в начале прогона, забывая, куда вы могли переместиться. их к.

Это проблема AutoLayout (как описано в теме UILabel, вызывающей другие объекты для сброса позиции на iOS). (Хотя я нахожу это странным, потому что ограничений нет вообще. Что угодно.)

Отключение AutoLayout действительно предотвращает сброс, ОДНАКО... В конечном счете, я хочу создать приложение с использованием AutoLayout по другим причинам, поэтому я хочу сделать это с включенным AutoLayout.

Итак, добавлен некоторый код в viewDidLoad() в соответствии с сброс кадров UIView при использовании автомакета, а именно в раскадровке, я с помощью элемента управления перетащил из объекта «Основной вид» в помощник редактора для ViewController.swift строку, в которой говорится

@IBOutlet var mainView: UIView!

а затем, на мой взгляд,DidLoad, я добавил

mainView.translatesAutoresizingMaskIntoConstraints = true

Но это не имеет никакого эффекта, т. е. поведение сброса все еще происходит. :-( Никаких предупреждений о "Невозможно одновременно удовлетворить ограничениям" не генерируется.

Любая помощь? Спасибо. Запуск XCode 7 бета 5.


  • Зачем вообще задавать вопрос, если он уже решен? Если вы считаете, что это может помочь другим, опубликуйте только вопрос (как настоящий вопрос), а также опубликуйте ответ и фактический ответ. 17.08.2015
  • Хорошо, постараюсь отредактировать соответственно... 17.08.2015

Ответы:


1

Решено! Ах. Так что этот код нужен ДРУГИМ объектам, а НЕ основному виду! то есть код теперь читается...

@IBOutlet var mainView: UIView!
@IBOutlet weak var monkeyView: UIImageView!
@IBOutlet weak var bananaView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //self.mainView.translatesAutoresizingMaskIntoConstraints = true // not needed
    self.monkeyView.translatesAutoresizingMaskIntoConstraints = true
    self.bananaView.translatesAutoresizingMaskIntoConstraints = true
}

С этими изменениями не происходит нежелательного сброса, и все же AutoLayout включен! :-)

16.08.2015
Новые материалы

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

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

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

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

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

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

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