Для того, чтобы пользователи приложения не тыкали своими шаловливыми ручками куда попало не могли вводить заведомо не корректный текст, можно реализовать ряд ограничений для них.
На сайтах обычно это реализуется с помощью JS-скриптов, которые, теоретически, могут быть оключены пользователем на глобальном уровне, и все ограничения, реализованные с помощью JS перестанут действовать.
В iOS-приложении пользователь ничего отключить не сможет :)
Дале - примеры кода...
Ситуация: xCode v.10.xx, после импорта свежего сертификата и ключа iphone distribution в Keychain, в нем отображается красным цветом надпись:
Сертификат iphone distribution ненадежен
По умолчанию объект UITextView не имеет границы (в отличие от UITextField). Иногда это не критично, но в некоторых случаях граница для текстового поля все-таки необходима:
Например, когда цвет фона родительского View и нашего UITextView одинаковые, и нет контраста между ними, то пользователям будет не понятно, где находится граница UITextView.
При использовании кастомных цветов для элементов интерфейса приложений могут быть проблемы с их отображением при использовании тёмной темы на устройствах.
Чаще всего тексты могут быть просто плохо читаемы, или совсем не читаемы из-за отсутствия контраста между цветом фона и цветом, например, текстовых меток.
Если содержимое UILabel в интерфейсе мобильного приложения может варироваться от одного короткого слова до двух предложений, то нужно немного постараться, чтобы это выглядело адекватно хорошо на различных устройствах с разными экранами.
Когда UILabel не имеет фиксированного размера и должен меняеться динамически в зависимости от количества текста в нем, то это делается следующим образом:
Функция для вычисления факториала с помощью Swift:
func factorial(_ x: Int) -> Int {if x < 1 {return 1}return x * factorial(x-1)}
Запуск функции:
var z = factorial(-3)print(z)
В некоторых ситуациях пользователям iPhone или iPad может быть не удобно задействовать две руки, чтобы сделать скриншот экрана во время использования приложения, и они были бы счастливы делать это с помощью нажатия на одну кнопку - прямо в интерфейсе приложения.
На самом деле ни разу даже не возникало такой мысли - делать скриншот экрана iPhone с помощью одной кнопки в интерфейсе приложения, пока один товарищ не рассказал, что есть категория пользователей устройств Apple "старой закалки", которым не удобно растопыривать пальцы и задейстывовать две руки для сохранения изображения экрана.
Если xCode при компиляции проекта ругается на часть кода и выдает ошибку, например, такую:
Thread 4: Exception: -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.
Это означает, что данный кусок кода должен выполняться в главном потоке, а не в дополнительном.
При публикации приложения в App Store кроме описания программы необходимо добавлять снимки экрана. Скриншоты экрана можно сделать с симулятора.
Но: в iTunes Connect указаны размеры экранов в дюймах, а в xCode при выборе симулятора указаны только модели iPhone и iPad без подробностей, какие у них экраны, соответственно, нужно или помнить размеры всех нужных устройств, или иметь под рукой шпаргалку.
Различные полезности xCode для начинающих. То, что облегчает жизнь разработчику и уменьшает трудоемкость. Простые мелочи, описание которых не требует отдельной статьи.
Конечно, после использования много раз это запомнится, и шпаргалка будет не нужна, но даже в этом случае она может пригодиться другим.
В продолжение статьи "Как закачать видео на ipad" возникла необходимость написать новую шпаргалку - в соответствии с "заявками телезрителей" - как выполнить это с использованием Wi-Fi, если планшет заблокирован на подключение к "чужим" компьютерам. Подобная ситуация возможна при использовании корпоративных планшетов, которые были настроены с помощью MDM (были переведены в режим SUPERVISED (управляемые), и для них был активирован запрет на подключение к чужим...
Пользователи, на компьютерах (ноутбуках) которых установлены программы Jeppesen FliteStar/FliteMap и Jepp View иногда после очередного обновления навигационной базы данных при запуске программы FliteStar/FliteMap могут увидеть сообщение об ошибке: Сообщение об ошибке "Failed to initialize JIT-EDocs API. (-7019) Unknown error" говорит, что программа не может инициализировать JIT-EDocs API.
Высокий уровень лояльности компании Apple к своим клиентам подтверждается в том числе и возможностью отменить покупку платного приложения, подписки или контента. С точки зрения мобильного разработчика данная информация, по идее, должна быть спрятана от пользователей мобильных устройств, а процедура запроса возврата потраченных денег должна быть сильно усложнена, бюрократизирована и доведена до уровня...
В очередной раз откроем словарик и начнем удивляться смыслу перевода некоторых английских фраз и выражений. Что поделать? - Сленг! Вот вам выражения, в которых используются части человеческого тела (BODY PARTS), использование их в повседневной английской речи и сравнение с русскими аналогами. 1. TO LEND SMB A HAND (досл. «одалживать руку»). По-русски это означает: помогать кому-либо. Пример: This box is heavy....
В навигационных программах Jeppesen (Jepp View, eLink for Windows и др.), имеющих базу данных со схемами аэропортов (Terminal Charts), срок действия этой навигационной базы данных задавался с помощью текстового файла charts.ini.
У каждой команды, которая играет в DOZOR должен быть штаб. Обычно штаб размещается в квартире или в доме одного из игроков команды, иногда на работе одного или нескольких игроков. Второе - сложнее, т.к. при этом надо быть в очень хороших отношениях с начальством или быть этим самым начальством! :) Помимо стандартного обеспечения компьютерами, Интернетом, кофе, чаем, пивом и другими необходимыми полезностями и...
Сейчас я уже не помню точно, да это и не важно - с чего все началось…, но в итоге образовалась инициативная группа из 7 человек с твердым намерением совершить восхождение на гору Эльбрус. В целях получения финансовой поддержки было подготовлено письмо и передано руководству нашей организации, в которой мы осуществляем свою трудовую деятельность с предложением в очередной раз прославить (в...