Предложения для доски кроссвордов
Я новичок в iOS, хотя я был с основами, и сейчас я пытаюсь разработать приложение кроссворд. Любое предложение, с чего начать.
С какой проблемой я сталкиваюсь больше всего, так это с разработкой клетчатой доски 15 X 15. Я думал о двух возможных решениях -
Чтобы поместить 15 текстовых полей в каждые 15 строк, и в соответствии с требованием я собираюсь отключить текстовые поля и добавить черный цвет фона. Но также есть два вопроса, так как поле кроссворда имеет номер в верхнем левом углу, как я могу поставить его? И второе - это повлияет на мою производительность, так как текстовых полей очень много.
Другое возможное решение, о котором я подумал, - это кодирование платы
CGRect and CGContextAddRect
в указанные позиции. Но у меня возникла проблема с тем, как взаимодействовать с CGRect, то есть при нажатии на него откроется клавиатура, и пользователь сможет напечатать букву.
Пожалуйста, помогите, я не знаю, с чего начать. Другие решения также являются приемлемыми.
3 ответа
Я хотел бы предложить UICollectionView. Это похоже на UITableView, но с несколькими строками и столбцами. Каждый UICollectionViewCell должен состоять из UITextField.
Что касается чисел, вы можете сделать это статически, т.е. вы делаете это в своей раскадровке (поместите UITextField для каждого числа, оставшееся пространство будет UICollectionView.
Или (что я предпочел бы, но требует большей логики) вы делаете доску 16x16, и 0-й раздел и каждая 0-я строка в разделе будут использоваться для чисел, остальное для фактического кроссворда.
Лучший способ - использовать UICollectionView, если вы нацеливаетесь на iOS6+ или AQGridView, если нацеливаетесь на более старые версии. Каждая клетка в конечном итоге является UIVIew.
Наличие собственного текстового поля может усложнить задачу. Используйте UIKeyboard и установите делегата как представление вашей коллекции. В didselectrowAtIndex покажи свою клавиатуру. Любой делегат от клавиатуры вернет вам символ, который вы можете установить в поле "Метка" в этом поле.
Есть несколько преимуществ для этого по сравнению с текстовым подходом
1) Вы можете легко настроить UIView/UILabel по сравнению с UITextField. 2) Метки могут иметь пользовательские шрифты и приписанные строки. 3) Сложно скрыть курсор в UITextField. который показывает режим редактирования.
Минусы: нужны настройки клавиатуры для метки. (Однако вы можете преодолеть с помощью альтернативных элементов управления, таких как pickerview)
Также убедитесь, что вы не храните никаких значений в своих представлениях. Всегда обновляйте представление из вашей структуры данных (двумерный массив символов).
Просто сетка просмотров с метками в них должна работать. Вы можете подумать, что это хорошая идея, чтобы иметь возможность вводить каждый символ на месте, но это не так. Пользователь должен будет нажать на квадрат типа Ана, напечатать на другом квадрате, набрать...
Поэтому, если вы используете метки, у вас может быть другой пользовательский интерфейс, который позволяет пользователю вводить строку, а затем вы можете поместить символы в правильные метки.