iOS 개발을보다 쉽게 만들기 위해 Swiftui 백 포트 모음을 소개합니다.
많은 백 포트는 iOS 13+를 지원하지만 이후 버전으로 Uikit 기능이 도입 된 경우 Uikit과의 패리티를 유지하기 위해 이러한 백 포트와 동일하게 적용됩니다.
경우에 따라 Swiftui 개발에 더 많은 기능을 제공하는 추가 API도 포함했습니다.
모든 백 포트는 Apple의 공식 API와 API 일치 할 것이며 추가 기능은 별도로 제공됩니다.
대부분의 경우 모든 백 포트는 Apple의 자체 문서를 사용하여 일관성을 위해 완전히 문서화됩니다. 자세한 내용은 헤더 문서 또는 Apple의 원본 문서를 참조하십시오.
또한 모든 백 포트 및 추가 기능을 포함하여 참조 코드를 포함하여 시작하는 데 도움이되는 추가 기능을 볼 수있는 데모 프로젝트도 있습니다.
마지막으로,이 repo가 최소한의 해킹으로 효과적으로 백 포트 할 수있는 방법 에 대한 훌륭한 리소스 역할을하기를 바랍니다.
전체 문서는 여기에서 찾을 수 있습니다.
이와 같은 유용한 라이브러리를 구축하면 가족과 시간이 걸립니다. 나는 지역 사회에 환원하는 것이 중요하다고 생각하기 때문에 여가 시간 에이 도구를 구축합니다. 이와 같은 유용한 라이브러리 작업을 계속하는 데 도움이되므로 저를 후원하는 것을 고려하십시오.
당신은 또한 나에게 다음과 '감사합니다'를 줄 수 있습니다.
이 라이브러리는 Dave Delong의 백 포트 디자인을 채택하여 단일 유형을 사용하여 공식 API에 유리하게 백 포트 구현을 제거 할 때 발견 가능성과 유지 가능성을 향상시킵니다.
순수한 유형의 백 포트는 Backport 네임 스페이스에서 쉽게 발견 할 수 있습니다. 마찬가지로, 수정자는 .backport 네임 스페이스에서 발견 될 수 있습니다.
불행히도
Environment백 포트는 이런 식으로 액세스 할 수 없으며,이 경우 Apple API 값은 백 포트와backport통해 발견을 단순화합니다.
유형 :
@ Backport . AppStorage ( " filter-enabled " )
private var filterEnabled : Bool = false수정 자 :
Button ( " Show Prompt " ) {
showPrompt = true
}
. sheet ( isPresented : $showPrompt ) {
Prompt ( )
. backport . presentationDetents ( [ . medium , . large ] )
}환경:
@ Environment ( . backportRefresh ) private var refreshAction Swiftui
AsyncImageAppStoragebackground - 뷰 빌더 APIDismissActionDynamicTypeSize - Label - LabeledContentNavigationDestination - 표준 NavigationView를 사용합니다navigationTitle - 새로운 APIoverlay - ViewBuilder APIonChangeopenURLProgressViewpresentationDetentspresentationDragIndicatorquicklookPreviewrequestReviewRefreshable -풀로 풀어 공간이 포함되어 있습니다ScaledMetricShareLinkStateObjectscrollDisabledscrollDismissesKeyboardscrollIndicatorsSection(_ header:)task - 비동기/대기 수정 자Uikit
UIHostingConfiguration - UICollectionViewCell 및 UITableViewCell 에 Swiftui를 임베드하는 것을 단순화합니다 모달 프레젠테이션
이를 제시된보기에 추가하면 제공된 폐쇄를 사용하여 대화식으로 해고하려고 할 때 사용자에게 ActionSheet 제시 할 수 있습니다. 이를 사용하여 대화식 해고를 완전히 비활성화 할 수도 있습니다.
presentation ( isModal : true ) { /* attempt */ }FITTINGGEOMETRYREADER
컨텐츠에 올바르게 자동 크기를하는 사용자 정의 GeometryReader 구현. 이는 GeometryReader 필요한 많은 경우에 유용하지만 부모의 뷰의 한계를 암시 적으로 가져 오는 것을 원하지 않습니다.
FittingScrollView
콘텐츠를 스크롤 할 수없는 경우 Spacer 를 존중하는 사용자 정의 ScrollView . 이것은 스크롤 뷰의 가장자리에 뷰를 놓아야 할 때 유용하지만 콘텐츠는 스크롤링을 필요로하지 않기에 충분히 작습니다. 또 다른 훌륭한 사용 사례는 수직 중앙 컨텐츠로, 콘텐츠가 스크롤이 필요하면 top 정렬됩니다.
수동으로 설치할 수 있습니다 ( Sources 디렉토리에서 파일을 복사하여) 또는 Swift 패키지 관리자 ( Preferred )를 사용할 수 있습니다.
Swift Package Manager를 사용하여 설치하려면 Package.swift 의 dependencies 섹션에 추가하십시오. 스위프트 파일 :
.package(url: "https://github.com/shaps80/SwiftUIBackports.git", .upToNextMajor(from: "2.0.0"))