Search
Write a publication
Pull to refresh

Comments 2

Вот только недавно делал похожие вещи в своем проекте, страдать пришлось =). Но там из-за версии нельзя было Layout использовать, пришлось читать размер View через GeometryReader в расширении View

import SwiftUI

extension View {
    func readSize(onChange: @escaping (CGSize) -> Void) -> some View {
        background(
            GeometryReader { geometryProxy in
                Color.clear
                    .preference(
                        key: SizePreferenceKey.self,
                        value: geometryProxy.size
                    )
            }
        )
        .onPreferenceChange(
            SizePreferenceKey.self,
            perform: onChange
        )
    }
}

private struct SizePreferenceKey: PreferenceKey {
    static var defaultValue: CGSize = .zero
    static func reduce(value: inout CGSize, nextValue: () -> CGSize) {}
}

Вот такой костыль вбивался, а после уже пересчет доступного пространства происходил.

Sign up to leave a comment.

Articles