Слепой программист: проектирование интерфейса в Xcode без возможности визуального позиционирования элементов пользовательского интерфейса

Я новичок в программировании на Mac и iOS и недавно решил серьезно заняться разработкой приложений для обеих платформ. Первым шагом, который я предпринял, была регистрация на программы разработчика Mac и iOS, загрузка Xcode и изучение книги о Objective-C. Я провел последние 6 недель, познакомившись с Objective-C, его синтаксисом, концепциями и базой Foundation, и был чисто развивающим приложениями командной строки для этих целей.

Теперь следующий шаг выглядит как Cocoa и разрабатывает приложения, предлагающие графические интерфейсы, которые я сейчас просматриваю. Теперь, вот проблема, с которой я сталкиваюсь: поскольку я полностью слеп, я не вижу визуально экран. Таким образом, я использую VoiceOver, устройство для чтения с экрана, встроенное в OS X и iOS. Возможно, некоторые из вас разработчики слышали о VoiceOver в какой-то момент, так как Apple указала множество рекомендаций по доступности, которые касаются VoiceOver. В этой заметке, спасибо всем вам, кто соблюдает эти рекомендации, ваши усилия очень ценятся!!!: -)

Что касается Xcode, он действительно хорошо работает с VoiceOver (VO). Добавление новых элементов пользовательского интерфейса также не имеет большого значения, я могу просто скопировать их из библиотеки и вставить их в представление. Однако я не могу перетащить их и настроить их привлекательным способом, или, по крайней мере, я еще не нашел способ сделать это, пока я только начинаю!

Теперь мне действительно хотелось бы узнать, есть ли какой-либо "текстовый" способ компоновки элементов пользовательского интерфейса. Я знаю, что у инспектора есть множество вариантов, но я не уверен, что если кто-нибудь из них разрешит мне, скажем, изменить координаты элемента пользовательского интерфейса вручную. Кроме того, я читал о новых ограничениях, которые помогают создать согласованный макет, но на данный момент я не очень-то знаком с тем, как они могут быть использованы или если они вообще будут полезны в моем случае.

Кроме того, я понимаю, что создание интерфейса, который на 100% привлекателен для знакомого конечного пользователя, может быть невозможен для меня, так как мне трудно решить выбор цвета или создать логотип. Таким образом, мне, вероятно, придется нанять кого-то для этих вещей. Однако, если бы я мог просто указать макет примерно, это уже мне очень помогло!

Спасибо за любые идеи/предложения: -)

Робин

Ответ 1

Я не слепой пользователь, но я работал с VoiceOver, поэтому, надеюсь, некоторые из них помогут. Я делаю это ответ сообщества, поэтому не стесняйтесь добавлять подсказки из своего собственного опыта, если вы работали с макетом пользовательского интерфейса в Xcode с VoiceOver.


При редактировании пользовательского интерфейса в Xcode есть инспектор, в котором вы можете изменить размер и положение просмотров. Ярлык для доступа к инспектору размеров - Alt + Command + 5. Тот же ярлык работает с VoiceOver.

Вы сказали, что вы кодируете как iOS, так и OS X. На iOS ось y начинается сверху и указывает вниз (поэтому более высокое значение y означает, что на экране ниже). Это означает, что x и y определяют верхний левый угол представления, а ширина и высота простираются вправо и вниз оттуда.

В OS X это наоборот. Ось y начинается снизу, а более высокое значение y означает, что на экране выше. В обоих случаях ось x идет слева направо. Это означает, что x и y задают нижний левый угол, а ширина и высота простираются вправо вверх.

Кроме того, каждое представление позиционируется относительно их родителя вместо абсолютных координат. Это означает, что если вы позиционируете представление при x = 10 и y = 30, а затем расположите другое представление внутри, то при x = 5 и y = 10 оно будет иметь абсолютное положение на экране, которое равно x = 15 и y = 40.

Если вы можете представить макет в своей голове, тогда вы сможете сделать это так, но это может быть трудно сделать.


Update

В верхней части иерархии эти координаты относятся к размеру окна. На iOS у вас фиксированные размеры (320 × 480 для iPhone и 1024 × 768 для iPad). В зависимости от того, находится ли устройство в ландшафтном или портретном, одна из них - ширина, а другая - высота. Вы обычно вычитаете 20 пикселей от высоты, чтобы учесть строку состояния. Таким образом, координата, где y = 0, будет находиться непосредственно под строкой состояния.

В OS X вы можете самостоятельно изменить размер окна. Я попытаюсь объяснить, где его найти.

На верхнем уровне. Перейдите в "группу исходного кода" и взаимодействуйте с ним. Там вы должны найти "группу навигационных панелей" и "таблицу" и "область прокрутки". Взаимодействуйте со столом. В этой таблице вы должны найти список заполнителей и список объектов. Одним из объектов будет "Окно". С выбранным окном все инспекторы изменят свойства окна. Вы можете быстро перейти к Инспектору размеров, перейдя на любого инспектора, а затем обратно в Инспектор размеров. Для типа exaple Alt + Command + 4, а затем Alt + Command + 5. Первыми двумя элементами в инспекторе размеров должны быть ширина и высота окна.

Ответ 2

Это обсуждение неизбежно уйдет с темы, но вот мои идеи:

  • Подумайте о специализации в чем-то другом. Программист может работать так много. Многие, если не большинство, программисты могут наслаждаться долгой и успешной карьерой, не имея необходимости создавать какие-либо элементы пользовательского интерфейса. Честно говоря, я не думаю, что это особенно интересно, если у вас не будет больше дизайнерского мышления.

  • В качестве альтернативы, любой инструмент, который вы используете для упорядочивания элементов, этот макет, вероятно, сохраняется в каком-то файле, возможно, в некотором стиле XML. Найдите этот файл и отредактируйте его.

  • Если вы хотите очень хорошо разбираться в элементах пользовательского интерфейса, подумайте о том, чтобы нанять нескольких человек, чтобы сделать несколько мероприятий для вас. Затем проанализируйте числа и придумайте какую-то формулу, которая будет хорошей эвристикой для такой договоренности. Или, возможно, кто-то уже придумал такую ​​формулу.