При переписывании представления в SwiftUI я заметил, насколько лучше стали выглядеть элементы, и внес радикальные изменения в другие функции.

Я откладывал добавление новой функции в Решающую жену, которая позволила бы пользователям видеть, что они ели в прошлом. Это было бы особенно полезно для меня, так как я постоянно смотрю на остатки еды в холодильнике и думаю, сколько им лет (моя жена - кондитер и не разрешает мне есть что-нибудь старше недели). Изначально я начал работу в UIKit еще в начале года, но меня отвлекли, создав виджет Today и пару других небольших обновлений. Когда я попытался объединить изменения, я обнаружил, что не очень хорошо разбираюсь в Git. Достаточно сказать, что я бросаю эту ветку.

Небольшая предыстория, прежде чем я продолжу. Я начал работать над Decisive Wife на старом 17-дюймовом Macbook Pro 2010 года выпуска еще в мае 2019 года. Он мог медленно запускать XCode и собирать для iOS 12.1. После того, как произошла WWDC2019 и был представлен SwiftUI, я не верил, что мой устаревший MBP сможет с этим справиться. Я также решил оставить цель сборки на уровне 12,1, так как слышал, что в iOS 13 много ошибок, и решил, что меньше людей будет обновляться до нее. После WWDC2020 казалось, что SwiftUI стал более зрелым, поэтому я решил переписать в нем свою самую сложную страницу - представление плана питания.

Редизайн представления плана питания

Для представления «План питания» я хотел, чтобы пользователь мог видеть все 7 дней недели без необходимости прокрутки. Это ограничило бы доступное мне вертикальное пространство, особенно на небольших телефонах, таких как iPhone SE. Создание ограничения, заключающегося в наличии только двух строк информации для каждого плана питания. Мне, конечно, нужно было, чтобы одна из этих строк была названием выбранного блюда. В следующей строке я хотел показать ярлыки, присвоенные еде, как быстрый и красочный способ обозначить типы блюд в течение недели. Это также добавило горизонтальное ограничение на количество меток, которые я мог включить в строку. Это особенно стало меньше, когда присутствовали изображение и время приготовления / приготовления. Я также не проявил особого творчества, когда дело дошло до отображения времени приготовления и приготовления, используя только «p» и «c» для их обозначения.

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

Что мне действительно понравилось, так это то, что области для этикеток выглядят лучше с большим количеством горизонтального пространства. Размер шрифта не изменился, и я могу меньше уместить в строке, но результатом я полностью доволен.

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

Спросите Шери Редизайн

Функция «Спроси Шери» была полностью переработана. Эта функция предназначена для того, чтобы пользователи могли быстро получать рандомизированное решение о еде на основе всех своих идей обеда или выбранных этикеток. Первоначально решение будет представлено пользователю в виде уведомления с тремя вариантами выбора: «ОК!», «Подробности» или «Спросить еще раз». Если бы у пользователя не было ярлыков, уведомление появилось бы сразу. Если у пользователя есть ярлыки, появится половина экрана, позволяющая ему выбрать, следует ли сделать выбор из подмножества идей обеда. Это снова представит уведомление. Есть много причин, по которым использование уведомления было неправильным, особенно когда повторный запрос закроет уведомление и заставит его снова появиться, заставляя экран мигать.

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

Вся функция была перемещена на отдельный лист, где сразу же предоставляется выбор, даже если пользователь добавил метки. При прикосновении к кнопке «Спросить снова» экран больше не мигает, чтобы отобразить новое уведомление, а вместо этого просто обновляется текст.

Добавление функции прошедшего приема пищи

Новая функция, о которой я упоминал в начале, также претерпела изменения с момента ее создания. Когда я впервые подумал о том, как я хочу, чтобы пользователи переключились на прошлые недели, я решил, что просто заменю кнопки на панели действий на недели, которые пользователь может загрузить. С SwiftUI это можно легко сделать, заменив массив, из которого извлекается список, массивом прошлой недели. Вот почему я хотел перейти на SwiftUI. Я быстро получил эту работу после того, как закончил перестроить представление в SwiftUI.

Затем у меня возникли идеи о том, как можно улучшить взаимодействие с пользователем, используя карусель моментальных снимков, чтобы отображать прошлые недели и заставлять пользователя перемещаться между ними. Мне всегда нравился внешний вид пользовательского интерфейса в карточном стиле, и я хотел реализовать его для Decisive Wife. Это казалось прекрасной возможностью для этого. Я смог следовать этому руководству, чтобы заставить его работать как шарм. Это также позволяет мне избежать необходимости иметь дело с логикой, связанной с определением того, находится ли представление в режиме редактирования по сравнению с режимом прошлых приемов пищи для строк. Я доволен результатом и не могу дождаться, чтобы выпустить его, как только будет доступна iOS.

Запоздалые мысли

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

Иконки взяты из Icons8.