Умные весы с анализатором массы

Чем умные весы отличаются от обычных?

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

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

Весы с контактами для измерения массы воды и жира в организме

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

Smart весы Xiaomi Mi Smart Scale


Умные весы также пригодятся тем людям, которым сложно мотивировать себя на регулярные тренировки. Ведь они показывают вес с точностью до 100 грамм. В результате 50–100 минут игры в футбол, энергичного фитнеса или плаванья, человек теряет до 400 грамм веса. Большая часть этих потерь приходится на воду, которая выходит с потом. При этом до 5% потерь приходится на подкожный жировой слой, ради снижения которого человек идет на тренировку. Благодаря высокой точности определения веса, а также вычислению объема воды и жира, умные весы оказываются весьма полезным стимулятором. Ведь даже потеря 150–200 грамм веса на тренировке, если вы о ней узнаете (обычные весы не обеспечивают такой точности измерения), окажется весьма серьезным мотиватором, побуждающим к дальнейшим тренировкам.

Xiaomi Mi Smart Scale

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

Умные весы – отзывы пользователей

В интернете выложено огромное количество отзывов об опыте применения умных весов. Большинство пользователей сходится на том, что эти устройства полезны, ведь позволяют получить большой объем информации о своем теле с помощью одного прибора. Другие пользователи утверждают, что приобретение умных весов – неоправданная трата денег, ведь у них уже есть профессиональные устройства, оценивающие костную и жировую массу, объем воды и другие параметры. Третьи утверждают, что такие весы опасны, ведь воздействуют на человека электрическим током. Такие мнения основаны не на личном опыте, а на разного рода страшилках, рассказах соседей и знакомых.

В таких рассказах их знакомые встали на весы и получили удар электрическим током, из-за чего остановился кардиостимулятор или начались преждевременные роды. Однако, ни одного такого отзыва, основанного на своем опыте использования умных весов в сети нет. Это же подтверждает и элементарная логика – согласно медицинским исследованиям, ток силой меньше 1 миллиампера не может причинить вреда человеку. Ток в умных весах в десятки и сотни раз меньше. Ведь сила тока зависит от напряжения источника питания, его мощности и сопротивления нагрузки. В качестве источника питания в умных весах используют 3–4 батарейки на 1,5 вольт.

Место для установки батареек

Если человек не вспотел, то электрическое сопротивление его тела достигает 100 кОм. Максимальный ток в этом случае не превысит 100 микроампер, то есть 0,1 миллиампера. А ведь в этих расчетах не учтены защитные резисторы и другие детали, увеличивающие общее сопротивление и снижающие ток. Те, кто родился во второй половине XX века, помнят популярное детское развлечение – лизать контакты батарейки «Крона», чтобы почувствовать, как она щипается. Напряжение «Кроны» 9 вольт, а сопротивление покрытого слюной языка в сотни раз меньше, чем у сухой кожи. Если же приложить контакты такой батарейки к любой сухой части тела, то сила тока будет настолько мала, что человек не ощутит даже дискомфорта.

Как выбирать умные весы

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

  • измерение массы;
  • определение индекса массы тела;
  • определение объема жира;
  • определение объема воды;
  • определение массы костей;
  • количество пользователей, чьи данные весы будут помнить постоянно;
  • максимальный допустимый вес;
  • репутация;
  • надежность;
  • возможность подключения к различным гаджетам.

Наиболее важные параметры из этого списка – количество постоянных пользователей и максимальная масса. Если у кого-то в вашей семье максимальная масса превышает 150 килограмм, то он или она не смогут воспользоваться устройством с меньшим максимальным весом. Большинство умных весов позволяют ввести данные 4 постоянных пользователей и одного гостя. Однако существуют модели, в которых можно прописать до 12 постоянных пользователей.

Умный браслет расширяющий возможности умных весов

Не менее важны и такие параметры, как репутация, надежность и возможность подключения к различным электронным устройствам. Недорогие китайские устройства от неизвестного производителя не могут похвастаться этими характеристиками, тогда как лидеры рынка: Tanita, Bork, Cameron, Xiaomi не только отличаются надежностью и собирают положительные отзывы, но и поддерживают подключение к различным гаджетам. Таким, как смартфоны, телефоны, различные устройства, позволяющие более точно определять массу и структуру тела.

Наиболее популярны весы Xiaomi Mi Smart Scale. Их цена не превышает 4 тысяч рублей, однако, они обеспечивают высокую точность измерения, поддерживают подключение не только к смартфонам, но и к различным «умным» устройствам производства Xiaomi. Вместе с умными браслетами и умными кроссовками, такой комплекс позволяет контролировать расход энергии на тренировках, правильность выполнения упражнений и их влияние на общее состояние организма. Xiaomi Mi Smart Scale – хороший выбор для тех, кто заботится о своем здоровье.

Функционал

Стоит отметить, что Весы способны работает не на всех девайсах. Однако, список совместимых устройств Вам придется искать самостоятельно. С помощью этого приложения можно взвесить предмет весом до 500 грамм с погрешностью в 20 грамм (в плюс или минус). Как видите, серьезно взвешивать что-то с его помощью было бы нерационально.

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

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

Зачем покупать весы-анализаторы и на какие показатели обращать внимание

Весы-анализатор — показывают, насколько хорошо вы себя чувствуете, для чего измеряют несколько важных показателей организма. О том, как и зачем это делается, мы и поговорим сегодня.
Все метрики умных весов-анализаторов так или иначе записывают то, что вам помогает худеть или набирать вес (в зависимости от целей). Даже, когда речь идет о гидратации, надо понимать, что введен этот параметр не просто так. При этом, обладая некоторой степенью условности, они все-таки помогают вовремя отслеживать тренды, а при некотором, хотя бы и поверхностном, изучении вопроса эти тренды помогут сделать некоторые выводы.
Биоимпедансометрия
В основе технологии — биоимпедансный анализ, известный еще с 60-х годов, основанный на измерении электрического сопротивления тканей. Такой анализ считается точным и помогает выявить ряд заболеваний и провести оценку состава тела человека на соответствие принятым нормам.
Умные весы — это своего рода «усеченный» биоимпедансный анализатор, так как отведений тут, как вы понимаете, сильно меньше, — только в области пяток, однако этого может быть достаточно для расчета основных параметров.
Основные показатели биоимпедансометрии

  • Уровень воды в организме
  • Уровнь жировой массы
  • Анализ костной ткани
  • Анализ мышечной массы

Также в процессе биоимпедансного анализа может быть рассчитана активная клеточная масса, скорость основного обмена веществ и некоторые другие параметры.
С помощью весов-анализаторов все начинается с веса, параметра, который не требует особых пояснений, и индекса массы тела.
Где применяется биомпедансный анализ

  • Эндокринологическая практика. Анализ позволяет получит «объективную картину» состава тела и выявить различные отклонения от нормы для последующей коррекции с помощью ЛФК, диет и других клинических мероприятий.
  • Спортивная медицина. Диагностика отражает тренды, которые на стартовых уровнях невозможно увидеть в зеркале или почувствовать. Также способствует корректировке диет и программ тренировок.

Клинический биомпедансный анализ, более детальный, позволяет также оценить риск различных заболеваний опорно-двигательного аппарата, мочеполовой системы, диабета (чаще — II типа), а также заболеваний, связанных с недостатком белка в организме.
Также с помощью данного исследования может производиться оценка жизнеспособности тканей при трансплантации и т. п.
Безопасность
Не рекомендуется выполнять биоимпедансометрию при беременности или наличии кардиостимулятора, а также в период менструации, повышении температуры тела или при повреждении кожи в местах контакта с электродами.
Умные весы как биоимпедансный анализатор располагают сегодня широкими возможностями. Мы перечислим наиболее важные, центральные параметры, по которым производится оценка:
ИМТ
Индекс массы тела — это скорее математика, нежели именно анализ. Самый простой параметр, который рассчитывается по формуле: вес в кг/рост в м^2.

То есть, например, 65 / (1,70*1,70) = 22,4.
Уровень жира
Как уже отмечалось, любые весы-анализаторы — это приблизительные цифры во всех данных кроме веса, однако эти цифры помогают отслеживать тренды: если процент жира будет увеличиваться от замера к замеру, то это плохой сигнал, и рассчитывать на то, что это «все ложь» не следует.
Можно рассчитывать процент жира и самостоятельно: для этого надо поделить жировую массу на вес тела, но для этого надо знать первый параметр, который с точностью даст только гидростатическое взвешивание. Весы-анализаторы же производят вычисление уже «в уме» — пропуская ток через одну ногу и получая сигнал с потерями на выходе — на другой ноге — они делят цифру и выдают вам исходный процент, который потом может уменьшаться/увеличиваться в зависимости от привычек и образа жизни.

Для мужчин, как видно, принято считать диапазон от 6 до 13 процентов — близким к атлетической норме, свыше 25% — ожирение.
Нормы М и Ж

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

Снижение — дурной знак, так как, даже руководствуясь собственной логикой, человек должен понимать, что крепость костей = поддержка и опора мышцам и внутренним органам. При потерях в этом показателе в тренде необходимо обратиться к врачу и сделать предложенные анализы, так как среди прочего потери в костной массе могут указывать на остеопороз, заболевание, стоящее сейчас в одном ряду с онкологией, диабетом и сердечно-сосудистыми заболеваниями.
Выдержка из статистики в СШАЕжегодно фиксируется 1,5 млн. переломов, связанных с остеопорозом, из них 700 тыс. переломов позвоночника, 250 тыс. переломов шейки бедра, 250 тыс. переломов дистального отдела лучевой кости и 300 тыс. переломов в других частях скелета. Риск переломов позвоночника, шейки бедра и дистального отдела лучевой кости составляет 40% для белых женщин и 15% для белых мужчин в возрасте 50 лет и старше. До 50% больных с переломом шейки бедра не могут обходиться без посторонней помощи, а от 15 до 20% больных умирают в течении 1-го года. Количество остеопоретических переломов в мире увеличивается и с 1,7 млн. в 1990 г. возрастёт до 6,3 млн. в 2050 г.
Отсюда
Также более глубокие исследования костной ткани позволяют выявить отдельные виды рака у детей.
В любом случае недооценивать эти данные не следует.
Анализ мышечной массы
Увеличение мышечной массы условно приравнивают к снижению массы жировой: больше мышц — меньше жира, что при похудании является главным критерием. Однако не всегда это так.
Опасность в каком-то смысле являют низкокалорийные диеты, которые некоторые применяют «в паре» с физическими нагрузками: в таких диетах мало белков, поэтому худеть — человек худеет, однако не за счет сжигания жира, а за счет как раз потери мышечной массы!
В связи с чем, если показатель мышечной массы, вслед за весом будет снижаться, то тренд также можно признать неблагоприятным, потому за этим и принято следить с помощью подручных инструментов, в том числе и весов.
Рассчитывать мышечную массу можно и самостоятельно:
Вот один из советовДля того чтобы определить процент вес мышц в организме человека необходимы вспомогательные приборы. Таковыми являются штангенциркуль и портновский сантиметр.
Если штангенциркуль отсутствует, то его можно с легкостью заменить калипером. Прежде, нежели приступить к определению мышечной массы в организме человека необходимо быть осведомленным в том, какие измерения тела потребуется провести для начала и учесть всевозможные нюансы этого процесса.
Приступать к расчету стоит с измерений при помощи сантиметра, которым потребуется измерить четыре окружности:

  • Плечо
  • Предплечье
  • Голень
  • Бедро

Измерять плечо рекомендуется только в спокойном состоянии, поэтому напрягать мышцы в процессе измерения не стоит. Стараться нужно измерить плечо в том месте, где расположено большинство мышц.
При снятии замеров с предплечья необходимо позаботиться о том, дабы рука при этом не находилась в напряжении и свободно свисала.
Для измерения голени необходимо снимать мерки с икр, желательно в том месте, где они выявлены больше всего.
При измерении бедра необходимо стать ровно, таким образом, чтобы вес тела равномерно распределился на две ноги. После чего следует провести измерения сантиметром, охватив бедро под ягодичной складкой.
После того как требующиеся показатели были сняты, для дальнейших расчетов потребуется узнать еще и подкожные жировые складки. Осуществить это поможет штангенциркуль. На основе полученных данных можно рассчитать, какая мышечная масса у человека.
Для того чтобы рассчитать мышечную массу тела мужчин можно воспользоваться формулой Матейки. Для этого разработана следующая формула: М=L *r2 *K
Для того чтобы разобраться в подсчетах, можно воспользоваться следующей расшифровкой:

  • М – это и является мышечная масса тела, которую нам и требуется рассчитать.
  • L – показатель, который характеризует рост мужчин. Для данной формулы рост рекомендуется брать в сантиметрах.
  • r – для расчета данного показателя необходимо выполнить три действия. Первое действие заключается в вычислении суммы четырех показателей, полученных в самом начале определения массы – это охват плеча, предплечья, голени и бедра. Полученную сумму необходимо разделить на 25, 12. Второе действие схоже с первым, ведь в нем также требуется узнать сумму показателей и разделить ее на 100. Во втором действии для расчета берутся измерения подкожно-жировых складок. Суть третьего действия заключается в получении разницы между первым действием и вторым. Данная разница и является показателем r, который и потребуется подставить в формулу, что была приведена выше.
  • К – это неизменный показатель, который равняется 6,5.

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

Норма мышечной массы тела в процентах для мужчин и женщин разная. Так, для женщины норма – это 35% от всей массы тела. А вот норма для мужчины немного выше и составляет около 43%.
Конечно же, при регулярных физических нагрузках и правильном питании в организме спортсмена процессы увеличения мышечной массы активизированы больше, чем у человека, не имеющего никакого отношения к спорту. Поэтому норма для спортсмена заключается в 50% мышц от общей массы тела.
Отсюда
Учитывать следует и то, что весы — это несегментированная мышечная масса, включая и гладкие, и скелетные мышцы, иными словами — усредненный показатель, однако при равномерном снижении веса и массы мышц нужно догадаться, что, вероятно, что-то пошло не так, и пересмотреть режим питания и тренировок!
Уровнь жидкости в организме
В первую очередь в весах данная метрика введена потому, что уменьшение уровня жидкости ведет к набору жира, иными словами для тех, кто худеет, важно отслеживать и это. Нормальным считается уровень жидкости 50-75%.

Также надо понимать, что воде в целом отведена одна из ключевых ролей в нашем здоровье. Вот лишь некоторые «сферы влияния»:

  • регулировка температуры тела
  • обеспечение питательными веществами, кислородом, ферментами, гормонами
  • вывод токсинов и продуктов обмена веществ из организма
  • поддержка нормальной работы суставов
  • обеспечение естественной влажности кожи и других тканей и т.д.

При снижении данного показателя необходимо проконсультироваться со специалистом, так как недостаток воды ухудшает работу почек, увеличивает нагрузку на печень и т. п., что может повлечь серьезные хронические заболевания.
Какие весы выбрать
Весов-анализаторов чрезвычайное множество, и каждая модель претендует на точность. Внимания заслуживает и новинка, которую мы привезли совсем недавно — смарт-весы MGB Body fat scale.
Во-первых, они предлагают наиболее широкий спектр метрик, который даст фору большинству популярных моделей, в том числе и Xiaomi. Во-вторых, цена — она более чем жизнеспособна в данной категории и, наконец, габариты, что немаловажно. Но — обо всем по порядку.
Приложение
Весы синхронизируются по Bluetooth с IOS и Android-девайсами, после чего требуется пройти регистрацию.
В данный момент мы заняты переводом приложения, однако пока софт на английском языке. Тем не менее, все довольно понятно. Всего анализ производится по 13 метрикам, среди которых как те, что мы уже описали, так и иные:

  • Мышечная масса в процентах и кг
  • Гидратация
  • Костная масса
  • BMR — показатель обмена веществ. В данном меню показан прогноз калорий, необходимых для поддержания нормальной работы организма в покое. Данный индекс «чувствителен» к образу жизни, например, при наборе мышечной массы показатель будет расти.
  • Уровень висцерального жира — важный показатель. Условно висцеральный жир — это как бы с одной стороны подушка для внутренних органов, с другой — что-то вроде «грелки» для них же. Высокий уровень висцерального жира повышает давление, провоцирует заболевания сердца, снижает чувствительность к инсулину, что может вызвать диабет. Данные предлагаются в единицах:

  • Безжировая масса
  • Протеин

Данные моментально подгружаются на главный экран: ключевыми параметрами выведены вес, индекс массы тела, жировая масса, а далее списком идут дополнительные сведения.
Для каждой метрики можно получить расшифровку, правда, пока на английском языке.
Приложение поддерживает «многопользовательский» режим.
Внешний вид
Весы имеют, можно сказать, классический вид: белый квадрат с дисплеем посредине в верхней части. По краям расположены отведения, на которые нужно вставать при взвешивании, босиком.
Отличительной особенностью данной модели является небольшой размер: квадрат 26X26 отстоит от пола всего на 2,5 см.
Отстоит он, кстати сказать, на прорезиненных устойчивых ножках, то есть на кафеле они никуда не поедут.
Работают весы от 4 «мизинчиковых» батареек:
Продается девайс в тонкой, негромоздкой коробке, с тыльной стороны которой можно найти ссылки на оба приложения, а также перечисление получаемых данных:
Цена устройства
Сейчас по соотношению цена/качество/потребительская точность они выглядят очень неплохо: в розницу данная модель стоит 2490 рублей, что с таким набором характеристик кажется выгодным.

3DTouch – Весы на iPhone: Начало

После выхода на рынок iPhone 6s и iPhone 6s Plus с экранами, которые поддерживают технологию 3D Touch, в App Store практически сразу появилось приложение для взвешивая слив и персиков.

Не могу с уверенностью сказать почему именно этих фруктов, но могу сказать однозначно почему именно фруктов. Дело в том, что сенсор экрана iPhone работает по принципу определения утечки тока с поверхности сенсора, а для этой самой утечки нужен живой палец либо что-то, что обладает электрической емкостью. Думаю, каждый знает, что на пластиковые стилус или ноготь экраны i-девайсов не срабатывают. Именно поэтому взвесить на том приложении что-то металлическое не получалось. Но фрукты имеют электрическую емкость, на них срабатывает сенсор и нормально срабатывает непосредственно 3D Touch.
Очень быстро это приложение было удалено из App Store. Лично мне кажется, что это было сделано из-за недалеких пользователей, которые попытались взвесить на своих устройствах пудовые гири. Разумеется, устройства сломались и они их понесли в сервисные центры. А там они сказали что-то из серии: «Приложение скачано из официального магазина, и там не предупреждали, что нельзя…».
В итоге, подобных приложений нет в магазине, но никто нам не помешает создать его для себя.

Задача

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

Создание проекта

Октройте XCode, выберите создание нового проекта, шаблон Single View Application

Построение интерфейса в Xcode

Перейдите в Storyboard, перетащите из библиотеки элементов на контроллер несколько UILabel, разместите их ближе к верхнему или нижнему краев контроллера. У меня получилось так:

Для эстетической привлекательности место куда будем класть предметы мы выделим красной окружностью. Можно взять уже готовую картинку с кругом, но это же не наш метод)). Круги мы нарисуем методами Core Graphics. Удобнее будет создать класс-наследник от UIView и уже с ним работать.
Добавьте в проект новый файл, назовите его ScaleView. Создайте в этом файле класс ScaleView который наследуется от UIView.

import UIKit class ScaleView: UIView { override func draw(_ rect: CGRect) { } }
Далее перейдите в StoryBoard, перенесите на контроллер из библиотеки элементов UIView и расположите его в центре нашего контроллера. Выберите только что добавленный UIView и в Identity Inspector задайте класс ScaleView, который мы создали ранее.
Также с помощью констрейнтов можно задать правила взаимного расположения элементов на экране. У меня это выглядит вот так:

Рисуем круги

Перейдите в файл ScaleView.swift. В классе ScaleView мы создали метод draw(_ rect:), который мы будем использовать для рисования внутри области отображения этого UIView.
Добавьте следующий код в метод draw(_ rect:)
override func draw(_ rect: CGRect) { let context = UIGraphicsGetCurrentContext() // 1 context?.setStrokeColor(UIColor.red.cgColor) // 2 context?.setLineWidth(14.0) // 3 context?.addArc(center: CGPoint(x: 375 / 2, y: 375 / 2), radius: 375 / 2 — 14, startAngle: 0, endAngle: 2 * CGFloat(M_PI), clockwise: true) // 4 context?.strokePath() // 5 }

  1. Получаем графический контекст, в котором мы буде рисовать
  2. Задаем цвет, которым будем рисовать. В данном случае. — это красный цвет
  3. Устанавливаем ширину линии, которой будем рисовать.
  4. Задаем путь для рисования в виде дуги, центр которой расположен в центре ScaleView, радиусом равным половине ширины ScaleView минус 14 ( это чтобы вписать дугу в видимую область View), и длинной дуги — по всей окружности в 360 градусов. Прошу учесть, что мои цифры ширины жестко заданы в предыдущем пункте с помощью констрейнтов.
  5. Рисуем по заданному пути заданными параметрами

Можно скомпилировать для проверки, однако также можно задать директиву для отображения изменений прямо в Interface Builder.
Вся магия в директиве @IBDesignable. Отметьте этой директивой класс ScaleView
import UIKit @IBDesignable class ScaleView: UIView { override func draw(_ rect: CGRect) { let context = UIGraphicsGetCurrentContext() context?.setStrokeColor(UIColor.red.cgColor) context?.setLineWidth(14.0) context?.addArc(center: CGPoint(x: 375 / 2, y: 375 / 2), radius: 375 / 2 — 14, startAngle: 0, endAngle: 2 * CGFloat(M_PI), clockwise: true) context?.strokePath() } }
После этого перейдите в StoryBoard, немного подождите и вы увидите нарисованную красную окружность в центре ViewController
Давайте потренируемся и нарисуем еще один круг поменьше и потоньше. Для этого в файле ScaleView в метод draw(_ rect:) добавьте следующий код:
context?.setLineWidth(1.0) context?.setStrokeColor(UIColor.lightGray.cgColor) context?.addArc(center: CGPoint(x: 375 / 2, y: 375 / 2), radius: 375 / 4 — 14, startAngle: 0, endAngle: 2 * CGFloat(M_PI), clockwise: true) context?.strokePath()
Думаю, понятно и так что мы добавили. По сути мы добавили еще одну окружность, серого цвета, радиусов в четверть ширины ScaleView и шириной в одну точку.
Результаты в StoryBoard:
Финалом наших подготовительных работ будет создание аутлетов для ScaleView и двух UILabel, который буду показывать силу нажатия на экран в процентах и вес в граммах. Ctrl-перетасктвние элементов из ViewController создаст нужные аутлеты.
@IBOutlet weak var scaleView: ScaleView! @IBOutlet weak var forceLabel: UILabel! @IBOutlet weak var grammLabel: UILabel!

Непосредственно — весы

Итак, мы вплотную подошли к моменту измерения силы нажатия на экран. Перейдите во ViewController и в методе viewDidLoad() добавьте стартовые значения для всех UILabel
override func viewDidLoad() { super.viewDidLoad() forceLabel.text = «0% force» grammLabel.text = «0 грамм» }
Как и все процессы, связанные с нажатиями на экран, в контроллере их можно отловить в методе touchesMoved(_::). Данный метод срабатывает когда касания экрана происходят во времени. Т.е. Если палец стоит на экране или движется по нему срабатывает этот метод и можно отследить все касания и их свойства. Добавьте его во ViewController и напишите следующий код:
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { if let touch = touches.first { // 1 if #available(iOS 9.0, *) { // 2 if traitCollection.forceTouchCapability == UIForceTouchCapability.available { // 3 if touch.force >= touch.maximumPossibleForce { // 4 forceLabel.text = «100%+ force» grammLabel.text = «385 грамм» } else { let force = (touch.force / touch.maximumPossibleForce) * 100 // 5 let grams = force * 385 / 100 // 6 let roundGrams = Int(grams) // 7 forceLabel.text = «\(Int(force))% force» // 8 grammLabel.text = «\(roundGrams) грамм» } } } } }
Вся механика iOS приложения Весы заключается в этом методе. Все остальное, что мы будем делать дальше в этом уроке — это доработки. Всю основную работу мы уже сделали. Давайте разбирать по пунктам

  1. Из всего множества касаний экрана выберем первое
  2. Данная директива проверяет установленную операционную систему на устройстве и пропускает далее только если версия операционной системы 9.0 и более. Работа с 3D Touch стала возможной только с 9-ой версии iOS. Пытаться его обработать в боль ранних версиях не имеет смысла
  3. А в этой строке идет проверка устройства на поддержку экрана с функцией 3D Touch. Ведь iOS версии 10 может стоять и на iPhone 6, но от этого экран этого смартфона не начнет различать силу нажатия. Данную проверку необходимо проводить по строгому требованию Apple
  4. У касания есть свойство force в которе передается сила нажатия каждый раз, как срабатывает метод touchesMoved(_::). И в этой строке мы сравниваем значение текущей силы нажатия и максимально возможного значения силы нажатия. И если сила нажатия больше максимальной, то в наши UILabel мы передаем максимальные значения, а именно — 100 % силы и 385 грамм. Тут следует отметить почему именно 385 грамм. Дело в том, что технология 3D Touch сделана именно так, что 100% силы нажатия соответствуют 385-ти граммам. Соответственно получай процент силы нажатия мы можем легко вычислить вес в граммах.
  5. Вот тут эти вычисления и делаем. В этой строке вычисляем процент силы нажатия
  6. Тут вычислим вес в граммах, исходя из формулы 100% = 385 грамм
  7. Это простое округление граммов до целого
  8. Передаем значения процента силы и веса в граммах в наши UILabel

Прежде чем запускать и проверять приложение нужно добавьте еще один метод, который срабатывает в момент, когда все касания на экран прекращаются touchesEnded(::), для того чтобы задать начальное положение наших UILabel и передать в них значения 0% и 0 грамм. Добавьте этот метод в класс ViewController.
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { forceLabel.text = «0% force» grammLabel.text = «0 грамм» }
Теперь можно компилировать приложение и проверять. Разумеется это нужно делать на реальном устройстве, чтобы увидеть результат. Симулятор не способен эмулировать силовые нажатия на экран.

Доработки

Основной функционал готов, но я при написании этого приложение решил добавить три вещи:

  1. При достижении максимального значения я хочу чтобы срабатывал виброотклик
  2. Обновление значений в UILabel происходят очень быстро, (я думаю вы это заметили при тестировании) поэтому нужно добавить некую плавность.
  3. В месте нажатия должен появляться полупрозрачный круг. Его диаметр должен увеличиваться по мере увеличения силы нажатия и уменьшаться по мере уменьшения силы нажатия

Этими дополнениями мы займемся в следующей статье 🙂

Записи созданы 1575

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Начните вводить, то что вы ищите выше и нажмите кнопку Enter для поиска. Нажмите кнопку ESC для отмены.

Вернуться наверх