iOS разработчик, который делится фишками, своим опытом и опытом других. В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки Авторский канал, iOS разработка
n = caseIndex
base_angle = pi*(1+sqrt(5))
r = sqrt(n)
theta = n*base_angle
x = r*cos(theta)
y = r*sin(theta)
Для упрощения терминологии: n это индекс семечка (у нас это просто кружок, baseAngle некий стартовый угол, r - радиус, x и y — позиции, на которые мы должны поместить наше семечко).
Что ж, попробуем повторить природное явление с помощью Swift!
1️⃣ Создадим GeometryReader, proxy.size будет размером поля. xCenter и yCenter - координаты центра, от которых я отталкивался.
2️⃣ Радиус можно рассчитать по следующей формуле let radius:Double = maxWidth * sqrt(Double(i)). maxWidth это ширина семечка (тех, что ближе к краю поля).
3️⃣ Заполяем поле с помощью CircleInside в зависимости от максимального количества "семечек" внутри поля.
4️⃣ И небольшой эффект анимации: scaleEffect и rotationEffect по тапу.
😎 В итоге получится то, что вы видите на гифке.
🛠 Свой код я залил на Github, можете изменять его так, как захотите.
@iOS Dev — решаю загадки Да Винчи на Swift.Face ID, система заполняет учетные данные - таким образом, их не нужно вводить повторно.
Чтобы корректно рализовать эту фичу в приложении для iOS, необходимо выполнить следующие шаги:
1️⃣ Настройка связанных доменов приложения (associated domains).
2️⃣Установка правильного типа автозаполнения для соответствующих полей.
📖 В этом материале более подробно рассматривается каждый из этих шагов.
@iOS DevshadowColor, shadowOffset, shadowOpacity, shadowPath и shadowRadius, а также их комбинации.
Кроме этого демонстрируется, как можно использовать UIBezierPath применительно к тени для создания интересного эффекта.
@iOS DevUICollectionView, а также приводит аргументы за использование кода, а не Interface Builder.
🛠 Кроме этого, он делится своим фреймворком
📺 Кстати, рекомендую посмотреть видео Apple о продвинутых пользовательских интерфейсах.
@iOS Dev