CS193p - зима 2015 - калькулятор раскадровки Autolayout

Я работаю над разделом "Автоматическая компоновка" в разделе "Назначение калькулятора" последнего курса Stanford CS193p с использованием новейшего кода Xcode в App Store (6.1.1 6A2008a).

Ограничения для Label для работы дисплея, но когда я выкладывал Buttons, автоматическая компоновка, казалось, игнорировала присутствие Label, Даже после добавления ограничений, как в лекции, Buttonкажется, игнорируют Label несмотря на то, что количество ограничений совпадает с числом профессора Хегарти.

Макет "работает", как это, но это не "правильно", и я хотел бы знать, что я делаю здесь неправильно, чтобы не попасть в плохие привычки Auto Layout.

Я бы выложил скриншоты, но у меня явно не хватает репутации, поэтому я бросил свой рабочий код на github:

https://github.com/krger/cs193p-2015/tree/master/Calculator

Буду признателен за любой вклад / руководство / предложения. Кроме того, здесь, кажется, нет места, где "студенты" iTunes U могли бы обсуждать курс.

5 ответов

Решение

Ваши верхние кнопки прикреплены к верхнему руководству по макету, а не к нижней части метки дисплея. Помните, профессор Хегарти сказал обратить внимание на синие линии. Ваша верхняя кнопка накладывается на метку дисплея, поэтому, когда вы создали ограничения для кнопки, AutoLayout решил прикрепить верхние кнопки к руководству по верхнему макету.

Чтобы исправить это:

  1. Избавьтесь от всех ваших ограничений.
  2. Добавьте ограничения обратно для отображения метки.
  3. Выберите все свои кнопки и перетащите их вниз, чтобы верхняя часть 7/8/9/x/sin была совмещена с нижней частью вашей метки дисплея.
  4. Добавьте ограничения назад для ваших кнопок.

Еще один способ исправить это, который работает:

  1. Удалите верхнее ограничение для каждой из кнопок 7/8/9/x/sin.
  2. В представлении "Макет документа" управляйте-drag от каждой из этих кнопок по очереди до метки дисплея и выберите " Вертикальный интервал" во всплывающем окне. Это добавит ограничение по вертикали к нижней части метки дисплея. Теперь вам просто нужно исправить константу.
  3. Нажмите на каждую из кнопок 7/8/9/x/sin по очереди. Отредактируйте ограничение Top Space в Инспекторе размера, изменив константу на 0 или же 8,

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

Я приложил скриншот моего размера, который правильно работает с автоматической версткой. Вы можете попробовать скопировать мои x=20, y=28 и height=38, как вы видите на панели инспектора размера ниже:

Исправлено автоматическое расположение меток

У меня была такая же проблема, и после некоторых проб и ошибок я нашел решение.

Хотя я не знаю фонового механизма системы автоматической разметки XCode, эта проблема, похоже, связана с "Внутренним размером" UILabel.

Таким образом, в "Инспекторе размеров" метки измените значение "Внутренний размер" с "По умолчанию (определяется системой)" на "Заполнитель".

После этого вы сможете увидеть синюю направляющую линию.

В любом случае, если вы знаете, как это работает, объясните, пожалуйста, причину. Благодарю.

У меня была очень похожая проблема, когда мои кнопки не демонстрировали поведение, которое, как они поняли, я хочу, чтобы поле было 8 относительно верхней метки. Они просто отделяли себя от нижней части обзора.

Ну... проблема была только в этом. Несмотря на установку 8 в верхнем ограничении (в разделе "Закрепление ->" Добавить новые ограничения ""), панель все еще была пунктирной. (Я бы выложил фотографию, но мне не хватает репутации).

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

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

Около 56:10 второй лекции он говорит, что если вы выберете свою метку, то выберите "Сбросить до рекомендуемых ограничений" в значке "Устранить проблемы с автоматической компоновкой", расположенном в нижнем правом углу (маленький треугольник между двумя вертикальными параллельными линиями), вы можете увидеть нижний край вашего ярлыка. Это, кажется, исправило это для меня.

Другие вопросы по тегам