Media is too big
VIEW IN TELEGRAM
📹 Переходы между видео в стиле Рилс
📹 Find out how to repeat Reels
Thank you for subscribing and recommending channel… I really appreciate all of you 🫶
P.S. All these videos were captured by me in different subjects of Russia 🇷🇺
#tasty
@swiftui_dev
📹 Find out how to repeat Reels
Thank you for subscribing and recommending channel… I really appreciate all of you 🫶
P.S. All these videos were captured by me in different subjects of Russia 🇷🇺
#tasty
@swiftui_dev
Media is too big
VIEW IN TELEGRAM
🔥 Весьма удобный и крутой лайфхак, как можно быстро помочь себе в верстке
🧨 Really nice and awesome lifehack how to help yourself with layouts
Думаю, уже все знают про то, как найти размер вьюхи с помощью GeomertyReader, если .frame не задан. Если нет, то я напомню:
Hope everyone already knows how to find the view size using GeomertyReader if .frame is not specified. Don’t worry, I'll remind you:
Теперь создадим структуру и модификатор, которые будем использовать для отображения границ размера элемента:
Next let's create a struct and modifier for displaying the view size:
А теперь можете сравнить итоговые вьюхи с макетами и проверить на случайные .padding():
That’s all! Now you can compare views in Canvas with the designed in Figma and check on accidental .padding():
#howto #getsources #groovy
@swiftui_dev
🧨 Really nice and awesome lifehack how to help yourself with layouts
Думаю, уже все знают про то, как найти размер вьюхи с помощью GeomertyReader, если .frame не задан. Если нет, то я напомню:
Hope everyone already knows how to find the view size using GeomertyReader if .frame is not specified. Don’t worry, I'll remind you:
import SwiftUI
struct SizePreferenceKey: PreferenceKey {
static var defaultValue: CGSize = .zero
static func reduce(value: inout CGSize, nextValue: () -> CGSize) {
value = nextValue()
}
}
struct MeasureSizeModifier: ViewModifier {
func body(content: Content) -> some View {
content.overlay(GeometryReader { geometry in
Color.clear.preference(key: SizePreferenceKey.self,
value: geometry.size)
})
}
}
extension View {
func measureSize(perform action: @escaping (CGSize) -> Void) -> some View {
self.modifier(MeasureSizeModifier.init())
.onPreferenceChange(SizePreferenceKey.self, perform: action)
}
}
Теперь создадим структуру и модификатор, которые будем использовать для отображения границ размера элемента:
Next let's create a struct and modifier for displaying the view size:
import SwiftUI
struct Measurements: View {
@State private var size: CGSize = .zero
let showSize: Bool
let color: Color
var body: some View {
label.measureSize { size = $0 }
}
var label: some View {
ZStack(alignment: .topTrailing) {
Rectangle()
.strokeBorder(
color,
lineWidth: 1
)
Text("H:\(size.height.formatted) W:\(size.width.formatted)")
.foregroundColor(.black)
.font(.system(size: 8))
.opacity(showSize ? 1 : 0)
}
}
}
extension View {
func measured(_ showSize: Bool = true, _ color: Color = Color.red) -> some View {
self
.overlay(Measurements(showSize: showSize, color: color))
}
}
extension CGFloat {
var formatted: String {
abs(self.remainder(dividingBy: 1)) <= 0.001
? .init(format: "%.0f", self)
: .init(format: "%.2f", self)
}
}
extension Double {
var formatted: String {
CGFloat(self).formatted
}
}
А теперь можете сравнить итоговые вьюхи с макетами и проверить на случайные .padding():
That’s all! Now you can compare views in Canvas with the designed in Figma and check on accidental .padding():
YourView()
.measure()
#howto #getsources #groovy
@swiftui_dev
Media is too big
VIEW IN TELEGRAM
📅 Календарь бронирования. Возьмем за основу календарь из Avito 👨💻
Компонент DatePicker в SwiftUI не позволяет пользователям выбирать диапазон дат. В свою очередь, MultiDatePicker поддерживает эту функцию, но этот контрол доступен только с iOS 16. Создадим свой для iOS 14. Основной дизайн сделаем по образцу календаря в приложении Avito. В нем есть несколько интересных вещей, таких как выбор диапазона дат, недоступные дни или обязательные к бронирования дни.
За кодом сюда
📆Booking calendar. Avito inspired 👨💻
SwiftUI’s DatePicker doesn’t allow users to pick a date range. On the other hand, MultiDatePicker allows this, but it is available only from iOS 16. Let’s create our own for iOS 14. The basic design is inspired by the booking calendar from the Avito app. It contains several interesting features, such as date range selection, unavailable days, or mandatory booking days.
Code is here
#tasty #groovy #trytodo
@swiftui_dev
Компонент DatePicker в SwiftUI не позволяет пользователям выбирать диапазон дат. В свою очередь, MultiDatePicker поддерживает эту функцию, но этот контрол доступен только с iOS 16. Создадим свой для iOS 14. Основной дизайн сделаем по образцу календаря в приложении Avito. В нем есть несколько интересных вещей, таких как выбор диапазона дат, недоступные дни или обязательные к бронирования дни.
За кодом сюда
📆Booking calendar. Avito inspired 👨💻
SwiftUI’s DatePicker doesn’t allow users to pick a date range. On the other hand, MultiDatePicker allows this, but it is available only from iOS 16. Let’s create our own for iOS 14. The basic design is inspired by the booking calendar from the Avito app. It contains several interesting features, such as date range selection, unavailable days, or mandatory booking days.
Code is here
#tasty #groovy #trytodo
@swiftui_dev