├── .gitignore ├── .swiftpm └── xcode │ └── package.xcworkspace │ └── contents.xcworkspacedata ├── LICENSE ├── Package.swift ├── README.md ├── SheeKit.podspec ├── SheeKit.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcshareddata │ └── xcschemes │ ├── SheeKit.xcscheme │ ├── SheeKitDemo.xcscheme │ ├── SheeKitTests.xcscheme │ └── SheeKitTestsHost.xcscheme ├── SheeKitDemo.entitlements ├── Sources ├── SheeKit │ ├── AdaptiveDelegate.swift │ ├── Extensions.swift │ ├── ModalPresentationStyle.swift │ ├── SheeKit.docc │ │ ├── Resources │ │ │ ├── SwiftUI-FullScreenCoverIsPresented@2x.png │ │ │ ├── SwiftUI-FullScreenCoverItemOnDismissContent@2x.png │ │ │ ├── SwiftUI-View-PopoverItemContent@2x.png │ │ │ ├── SwiftUI-View-PopverIspresentedContent@2x.png │ │ │ ├── SwiftUI-View-SheetIsPresentingContent@2x.png │ │ │ └── SwiftUI-View-SheetItemContent@2x.png │ │ └── SheeKit.md │ ├── SheeKit.h │ ├── SheetHostingController.swift │ ├── SheetModifier.swift │ ├── SheetPresenterController.swift │ ├── SheetProperties.swift │ └── UIViewControllerProxy.swift └── SheeKitDemo │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json │ ├── Extensions.swift │ ├── InitialPresentationPropertiesView.swift │ ├── Launch Screen.storyboard │ ├── PreferredContentSizeView.swift │ ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json │ ├── RootView.swift │ ├── SheeKitDemoApp.swift │ ├── SheetContentView.swift │ ├── Theme.swift │ └── UpdatablePresentationPropertiesView.swift ├── Tests ├── TestsHost │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Preview Content │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ └── SheeKitTestsHostApp.swift ├── UnitTests │ └── SheeKitTests.swift └── UnitTestsWithHost │ ├── SheeTestCase.swift │ └── ViewTestCase.swift └── docs ├── README.md ├── _config.yml ├── css └── site.css ├── documentation └── sheekit │ ├── dismissaction │ ├── callasfunction().html │ └── index.html │ ├── index.html │ ├── modalpresentationstyle │ ├── automatic.html │ ├── custom(transitioningdelegate:).html │ ├── formsheet(properties:).html │ ├── index.html │ ├── overcurrentcontext.html │ ├── overfullscreen.html │ ├── pagesheet(properties:).html │ └── popover(permittedarrowdirections:sourcerecttransform:adaptivesheetproperties:).html │ ├── modalpresentationstylecompat │ ├── automatic.html │ ├── custom(transitioningdelegate:).html │ ├── formsheet(properties:).html │ ├── index.html │ ├── overfullscreen.html │ ├── pagesheet(properties:).html │ └── popover(permittedarrowdirections:sourcerecttransform:adaptivesheetproperties:).html │ ├── shee_library │ ├── index.html │ ├── librarycontentprovider-implementations.html │ ├── modifiers(base:).html │ └── views.html │ ├── shee_previews │ ├── index.html │ ├── platform.html │ ├── previewprovider-implementations.html │ └── previews.html │ ├── sheetproperties │ ├── animatesselecteddetentidentifierchange.html │ ├── detents.html │ ├── index.html │ ├── init(prefersedgeattachedincompactheight:widthfollowspreferredcontentsizewhenedgeattached:prefersgrabbervisible:preferredcornerradius:detents:selecteddetentidentifier:animatesselecteddetentidentifierchange:largestundimmeddetentidentifier:pre-4nkl1.html │ ├── largestundimmeddetentidentifier.html │ ├── preferredcornerradius.html │ ├── prefersedgeattachedincompactheight.html │ ├── prefersgrabbervisible.html │ ├── prefersscrollingexpandswhenscrolledtoedge.html │ ├── selecteddetentidentifier.html │ ├── shouldadjusttosourceview.html │ └── widthfollowspreferredcontentsizewhenedgeattached.html │ ├── sheetpropertiescompat.html │ └── uiviewcontrollerproxy │ ├── definespresentationcontext.html │ ├── disablesautomatickeyboarddismissal.html │ ├── focusgroupidentifier.html │ ├── index.html │ ├── init().html │ ├── ismodalinpresentation.html │ ├── modalpresentationcapturesstatusbarappearance.html │ ├── modaltransitionstyle.html │ ├── preferredcontentsize.html │ ├── preferredscreenedgesdeferringsystemgestures.html │ ├── preferredstatusbarstyle.html │ ├── preferredstatusbarupdateanimation.html │ ├── prefershomeindicatorautohidden.html │ ├── preferspointerlocked.html │ ├── prefersstatusbarhidden.html │ ├── providespresentationcontexttransitionstyle.html │ └── restoresfocusaftertransition.html ├── favicon.ico ├── favicon.svg ├── images ├── SwiftUI-FullScreenCoverIsPresented@2x.png ├── SwiftUI-FullScreenCoverItemOnDismissContent@2x.png ├── SwiftUI-View-PopoverItemContent@2x.png ├── SwiftUI-View-PopverIspresentedContent@2x.png ├── SwiftUI-View-SheetIsPresentingContent@2x.png └── SwiftUI-View-SheetItemContent@2x.png └── img ├── added-icon.svg ├── deprecated-icon.svg └── modified-icon.svg /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata 19 | 20 | ## Other 21 | *.xccheckout 22 | *.moved-aside 23 | *.xcuserstate 24 | *.xcscmblueprint 25 | .DS_Store 26 | 27 | ## Obj-C/Swift specific 28 | *.hmap 29 | *.ipa 30 | 31 | ## Playgrounds 32 | timeline.xctimeline 33 | playground.xcworkspace 34 | 35 | # Swift Package Manager 36 | # 37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 38 | # Packages/ 39 | .build/ 40 | 41 | # CocoaPods 42 | # 43 | # We recommend against adding the Pods directory to your .gitignore. However 44 | # you should judge for yourself, the pros and cons are mentioned at: 45 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 46 | # 47 | # Pods/ 48 | 49 | # Carthage 50 | # 51 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 52 | # Carthage/Checkouts 53 | 54 | Carthage/Build 55 | 56 | # fastlane 57 | # 58 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 59 | # screenshots whenever they are needed. 60 | # For more information about the recommended setup visit: 61 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md 62 | 63 | fastlane/report.xml 64 | fastlane/screenshots 65 | -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Eugene Dudnyk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.5 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "SheeKit", 8 | platforms: [ 9 | .iOS(.v13), 10 | ], 11 | products: [ 12 | // Products define the executables and libraries produced by a package, and make them visible to other packages. 13 | .library( 14 | name: "SheeKit", 15 | targets: ["SheeKit"]), 16 | ], 17 | dependencies: [ 18 | // Dependencies declare other packages that this package depends on. 19 | // .package(url: /* package url */, from: "1.0.0"), 20 | ], 21 | targets: [ 22 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 23 | // Targets can depend on other targets in this package, and on products in packages which this package depends on. 24 | .target( 25 | name: "SheeKit", 26 | dependencies: [], 27 | path: "Sources/SheeKit" 28 | ), 29 | .testTarget( 30 | name: "UnitTests", 31 | dependencies: ["SheeKit"], 32 | path: "Tests/UnitTests"), 33 | ] 34 | ) 35 | -------------------------------------------------------------------------------- /SheeKit.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'SheeKit' 3 | s.version = '2.0.1' 4 | s.license = 'MIT License' 5 | s.summary = 'A bridge between SwiftUI and UIKit which enriches the modal presentations in SwiftUI with the features available in UIKit.' 6 | s.homepage = 'https://github.com/edudnyk/SheeKit' 7 | s.authors = { 'Eugene Dudnyk' => 'edudnyk@gmail.com' } 8 | s.source = { :git => 'https://github.com/edudnyk/SheeKit.git', :tag => s.version } 9 | s.ios.deployment_target = '13.0' 10 | s.source_files = 'Sources/SheeKit/**/*.{h,swift}' 11 | s.preserve_paths = 'Sources/SheeKit/SheeKit.docc' 12 | s.swift_version = '5.5' 13 | end 14 | -------------------------------------------------------------------------------- /SheeKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SheeKit.xcodeproj/xcshareddata/xcschemes/SheeKit.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 54 | 60 | 61 | 67 | 68 | 69 | 70 | 72 | 73 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /SheeKit.xcodeproj/xcshareddata/xcschemes/SheeKitDemo.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /SheeKit.xcodeproj/xcshareddata/xcschemes/SheeKitTests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 14 | 15 | 17 | 23 | 24 | 25 | 26 | 27 | 37 | 38 | 44 | 45 | 47 | 48 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /SheeKit.xcodeproj/xcshareddata/xcschemes/SheeKitTestsHost.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /SheeKitDemo.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.network.client 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Sources/SheeKit/AdaptiveDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AdaptiveDelegate.swift 3 | // SheeKit 4 | // 5 | // Created by Eugene Dudnyk on 30/09/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021-2022 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | import SwiftUI 30 | 31 | class AdaptiveDelegate: NSObject, UIPopoverPresentationControllerDelegate where Item : Identifiable { 32 | var performNextPresentationIfNeeded: (() -> Void)? 33 | var dismissedByUserCallback: DismissAction? 34 | var isInteractiveDismissDisabled = false 35 | var nextPresentation: (() -> Void)? 36 | weak var sheetHost: SheetHostingController? 37 | 38 | override init() { 39 | super.init() 40 | performNextPresentationIfNeeded = { [weak self] in 41 | guard let nextPresentation = self?.nextPresentation else { return } 42 | self?.nextPresentation = nil 43 | nextPresentation() 44 | } 45 | } 46 | 47 | func presentationControllerDidDismiss(_ presentationController: UIPresentationController) { 48 | dismissedByUserCallback?() 49 | } 50 | 51 | func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool { 52 | !isInteractiveDismissDisabled 53 | } 54 | } 55 | 56 | @available(iOS 15.0, *) 57 | final class AdaptiveSheetDelegate: AdaptiveDelegate, UISheetPresentationControllerDelegate where Item : Identifiable { 58 | 59 | var selectedDetentIdentifierBinding: Binding? 60 | 61 | override init() { super.init() } 62 | 63 | func sheetPresentationControllerDidChangeSelectedDetentIdentifier(_ sheetPresentationController: UISheetPresentationController) { 64 | selectedDetentIdentifierBinding?.wrappedValue = sheetPresentationController.selectedDetentIdentifier 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-FullScreenCoverIsPresented@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-FullScreenCoverIsPresented@2x.png -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-FullScreenCoverItemOnDismissContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-FullScreenCoverItemOnDismissContent@2x.png -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-PopoverItemContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-PopoverItemContent@2x.png -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-PopverIspresentedContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-PopverIspresentedContent@2x.png -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-SheetIsPresentingContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-SheetIsPresentingContent@2x.png -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-SheetItemContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/Sources/SheeKit/SheeKit.docc/Resources/SwiftUI-View-SheetItemContent@2x.png -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.docc/SheeKit.md: -------------------------------------------------------------------------------- 1 | ../../../README.md -------------------------------------------------------------------------------- /Sources/SheeKit/SheeKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // SheeKit.h 3 | // SheeKit 4 | // 5 | // Created by Eugene Dudnyk on 29/09/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021-2022 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | 30 | #import 31 | 32 | //! Project version number for SheeKit. 33 | FOUNDATION_EXPORT double SheeKitVersionNumber; 34 | 35 | //! Project version string for SheeKit. 36 | FOUNDATION_EXPORT const unsigned char SheeKitVersionString[]; 37 | 38 | // In this header, you should import all the public headers of your framework using statements like #import 39 | 40 | 41 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/Launch Screen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/PreferredContentSizeView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PreferredContentSizeView.swift 3 | // SheeKitDemo 4 | // 5 | // Created by Eugene Dudnyk on 30/09/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021-2022 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | 30 | import SwiftUI 31 | import SheeKit 32 | 33 | struct PreferredContentSizeView: View { 34 | @Binding var preferredContentSize: CGSize 35 | var body: some View { 36 | VStack(alignment: .leading, spacing: Theme.spacing4x) { 37 | Text("Preferred content size") 38 | HStack{ 39 | Text("Width:") 40 | Spacer() 41 | Text(String(format:"%.2f pt", preferredContentSize.width)) 42 | } 43 | Slider(value: $preferredContentSize.width, in: 0...UIScreen.main.bounds.width) 44 | HStack{ 45 | Text("Height:") 46 | Spacer() 47 | Text(String(format:"%.2f pt", preferredContentSize.height)) 48 | } 49 | Slider(value: $preferredContentSize.height, in: 0...UIScreen.main.bounds.height) 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/SheeKitDemoApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SheeKitDemoApp.swift 3 | // SheeKitDemo 4 | // 5 | // Created by Eugene Dudnyk on 28/09/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021-2022 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | 30 | import SwiftUI 31 | 32 | @available(iOS 14, *) 33 | struct _SheeKitDemoApp: App { 34 | var body: some Scene { 35 | WindowGroup { 36 | if #available(iOS 15, *) { 37 | RootView() 38 | } else { 39 | RootViewCompat() 40 | } 41 | } 42 | } 43 | } 44 | 45 | @main 46 | struct SheeKitDemoApp { 47 | static func main() { 48 | if #available(iOS 14, *) { 49 | _SheeKitDemoApp.main() 50 | } else { 51 | __App.run(RootViewCompat()) 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Sources/SheeKitDemo/Theme.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Theme.swift 3 | // SheeKitDemo 4 | // 5 | // Created by Eugene Dudnyk on 30/09/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021-2022 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | 30 | import SwiftUI 31 | 32 | enum Theme { 33 | static let cornerRadius: CGFloat = 12 34 | static let spacing1x: CGFloat = 4 35 | static let spacing3x = spacing1x * 3 36 | static let spacing4x = spacing1x * 4 37 | static let spacing11x = spacing1x * 11 38 | static let spacing12x = spacing1x * 12 39 | static let spacing30x = spacing1x * 30 40 | } 41 | 42 | extension View { 43 | @ViewBuilder 44 | func applyButtonStyle(isSelected: Bool) -> some View { 45 | let result = 46 | padding(.horizontal, Theme.spacing3x) 47 | .frame(minHeight: Theme.spacing11x) 48 | .background(RoundedRectangle(cornerRadius: Theme.cornerRadius).fill(isSelected ? .blue : .gray)) 49 | .accentColor(.white) 50 | if #available(iOS 15, *) { 51 | result 52 | .tint(.white) 53 | } else { 54 | result 55 | } 56 | } 57 | 58 | @ViewBuilder 59 | func applyLargeButtonStyle(isSelected: Bool) -> some View { 60 | let result = 61 | padding(.horizontal, Theme.spacing12x) 62 | .frame(minHeight: Theme.spacing30x) 63 | .background(RoundedRectangle(cornerRadius: Theme.cornerRadius).fill(isSelected ? .blue : .gray)) 64 | .accentColor(.white) 65 | if #available(iOS 15, *) { 66 | result 67 | .tint(.white) 68 | } else { 69 | result 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Tests/TestsHost/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Tests/TestsHost/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Tests/TestsHost/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Tests/TestsHost/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Tests/TestsHost/SheeKitTestsHostApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SheeKitTestsHostApp.swift 3 | // SheeKitTestsHost 4 | // 5 | // Created by Eugene Dudnyk on 28/09/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021-2022 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | 30 | import SwiftUI 31 | 32 | @main 33 | public enum SheeKitTestsHostApp { 34 | public static var app = _TestApp() 35 | static func main() { 36 | app.run() 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Tests/UnitTests/SheeKitTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CustomSheetTests.swift 3 | // CustomSheetTests 4 | // 5 | // Created by Eugene Dudnyk on 28/09/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | 30 | import XCTest 31 | 32 | class SheeKitTests: XCTestCase { 33 | 34 | override func setUpWithError() throws { 35 | // Put setup code here. This method is called before the invocation of each test method in the class. 36 | } 37 | 38 | override func tearDownWithError() throws { 39 | // Put teardown code here. This method is called after the invocation of each test method in the class. 40 | } 41 | 42 | func testExample() throws { 43 | // This is an example of a functional test case. 44 | // Use XCTAssert and related functions to verify your tests produce the correct results. 45 | } 46 | 47 | func testPerformanceExample() throws { 48 | // This is an example of a performance test case. 49 | measure { 50 | // Put the code you want to measure the time of here. 51 | } 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /Tests/UnitTestsWithHost/ViewTestCase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.swift 3 | // SheeKitTests 4 | // 5 | // Created by Eugene Dudnyk on 02/10/2021. 6 | // 7 | // MIT License 8 | // 9 | // Copyright (c) 2021-2022 Eugene Dudnyk 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining a copy 12 | // of this software and associated documentation files (the "Software"), to deal 13 | // in the Software without restriction, including without limitation the rights 14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | // copies of the Software, and to permit persons to whom the Software is 16 | // furnished to do so, subject to the following conditions: 17 | // 18 | // The above copyright notice and this permission notice shall be included in all 19 | // copies or substantial portions of the Software. 20 | // 21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | // SOFTWARE. 28 | 29 | import SwiftUI 30 | import XCTest 31 | 32 | extension UIHostingController: _Test where Content == AnyView {} 33 | extension UIHostingController: _ViewTest where Content == AnyView { 34 | public func initRootView() -> AnyView { 35 | return rootView 36 | } 37 | public func initSize() -> CGSize { 38 | sizeThatFits(in: UIScreen.main.bounds.size) 39 | } 40 | } 41 | 42 | extension _IdentifiedViewsKey: PreferenceKey {} 43 | extension _ContainedScrollViewKey: PreferenceKey {} 44 | 45 | open class ViewTestCase: XCTestCase { 46 | public var viewTest: UIHostingController? 47 | open override func setUp() { 48 | super.setUp() 49 | 50 | let viewTest: UIHostingController? 51 | 52 | if #available(iOS 15, *) { 53 | viewTest = _makeUIHostingController(initRootView(), tracksContentSize: tracksContentSize) as? UIHostingController 54 | } else { 55 | viewTest = _makeUIHostingController(initRootView()) as? UIHostingController 56 | } 57 | 58 | viewTest?.setUpTest() 59 | self.viewTest = viewTest 60 | } 61 | 62 | var window: UIWindow? { 63 | (UIApplication.shared.connectedScenes.first as? UIWindowScene)? 64 | .windows 65 | .first 66 | } 67 | 68 | @ViewBuilder 69 | open func initRootView() -> AnyView { AnyView(EmptyView()) } 70 | 71 | @available(iOS 15, *) 72 | open var tracksContentSize = true 73 | 74 | open override func tearDown() { 75 | viewTest?.tearDownTest() 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | SheeKit Documentation can be found [here](https://edudnyk.github.io/SheeKit/documentation/sheekit/index.html) 2 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal -------------------------------------------------------------------------------- /docs/css/site.css: -------------------------------------------------------------------------------- 1 | /* docc2html custom stylesheet */ 2 | 3 | /* 4 | TODO: media classes for responsiveness and light & dark 5 | */ 6 | 7 | body { 8 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 9 | background-color: white; 10 | color: black; 11 | padding: 0; 12 | margin: 0; 13 | font-synthesis: none; 14 | -webkit-font-smoothing: antialiased; 15 | } 16 | 17 | code { 18 | font-family: "Menlo", monospace; 19 | } 20 | 21 | h1 { 22 | font-size: 2.4em; 23 | font-weight: normal; 24 | } 25 | h2 { 26 | font-size: 2em; 27 | font-weight: normal; 28 | } 29 | h3 { 30 | font-size: 1.5em; 31 | font-weight: normal; 32 | } 33 | a { 34 | text-decoration: none; 35 | color: #4064F6; 36 | } 37 | a:visited { color: #4064F6; } 38 | 39 | /* navigation */ 40 | 41 | nav { 42 | position: sticky; 43 | top: 0; 44 | width: 100%; 45 | z-index: 10; 46 | background-color: white; 47 | opacity: 0.95; 48 | 49 | color: #777; 50 | padding: 1em 3em 1em 3em; 51 | margin: 0; 52 | border-bottom: 1px solid #EEE; 53 | } 54 | 55 | nav .nav-content { 56 | display: flex; 57 | align-items: bottom; 58 | } 59 | 60 | nav ul { 61 | padding: 0; 62 | margin: 0; 63 | display: inline; 64 | } 65 | nav .hierarchy li { 66 | display: inline; 67 | } 68 | nav .hierarchy li *::before { 69 | content: ">"; 70 | padding: 0 0.5em 0 0.5em; 71 | } 72 | 73 | 74 | /* page title */ 75 | 76 | main { 77 | padding: 2em 0em 1em 0em; 78 | margin: 0; 79 | } 80 | main .topictitle { 81 | padding: 0em 3em 0em 3em; 82 | } 83 | main > .container { 84 | padding: 0em 3em 0em 3em; 85 | } 86 | 87 | main .topictitle .eyebrow { 88 | font-size: 1.4em; 89 | color: #777; 90 | } 91 | 92 | 93 | /* page content */ 94 | 95 | main .description { 96 | border-bottom: 1px solid #CCC; 97 | padding-bottom: 2em; 98 | } 99 | 100 | .description .abstract { 101 | font-size: 1.4em; 102 | } 103 | 104 | p > picture > img { 105 | max-width: 100%; 106 | } 107 | 108 | div.content { 109 | font-size: 1em; 110 | line-height: 1.5em; 111 | } 112 | 113 | div.content > p > a > code { 114 | display: inline; 115 | } 116 | 117 | 118 | /* topics */ 119 | 120 | section { 121 | padding: 0em 3em 0em 3em; 122 | } 123 | div.section { 124 | padding: 0em 3em 0em 3em; 125 | } 126 | 127 | section.alt-light { 128 | background-color: #F7F7F7; 129 | } 130 | 131 | section h2 { 132 | padding: 1.5em 0 1em 0; 133 | } 134 | 135 | .topic .topic-icon-wrapper { 136 | } 137 | 138 | /* contenttable */ 139 | 140 | .contenttable h3 { 141 | margin: 0; 142 | } 143 | .contenttable .row { 144 | display: flex; 145 | align-items: flex-start; 146 | border-top: 1px solid #CCC; 147 | padding: 2em 0 1em 0; 148 | } 149 | 150 | .large-3 { 151 | max-width: 25%; 152 | flex-basis: 25%; 153 | flex-grow: 0; 154 | flex-shrink: 0; 155 | } 156 | .large-3 { 157 | max-width: 50%; 158 | flex-basis: 50%; 159 | flex-grow: 0; 160 | flex-shrink: 0; 161 | } 162 | .large-9 { 163 | max-width: 75%; 164 | flex-basis: 75%; 165 | flex-grow: 0; 166 | flex-shrink: 0; 167 | } 168 | 169 | .link-block { 170 | padding-bottom: 1em; 171 | } 172 | 173 | .section-content { 174 | padding-left: 1em; 175 | } 176 | 177 | a code .decorator { 178 | color: #777; 179 | } 180 | 181 | .topic .abstract .content { 182 | padding: 1em 0 1em 3em; 183 | } 184 | 185 | /* declarations */ 186 | 187 | pre { 188 | border: 1px solid #CCC; 189 | border-radius: 4px; 190 | margin: 0; 191 | padding: 0; 192 | } 193 | pre { 194 | margin: 0; 195 | padding: 0; 196 | } 197 | 198 | /* hero */ 199 | 200 | div.hero { 201 | padding: 4em 3em 3em 4em; 202 | margin-top: -2em; /* hack to counter the main padding */ 203 | } 204 | div.hero.dark { 205 | background-color: black; 206 | } 207 | div.hero.dark * { 208 | color: white; 209 | } 210 | 211 | .hero .headline h1 { 212 | margin-top: 0.2em; 213 | } 214 | .hero .content { 215 | font-size: 1.2em; 216 | } 217 | .hero .duration { 218 | display: flex; 219 | } 220 | .hero .eyebrow { 221 | font-size: 1.2em; 222 | color: #CCC; 223 | } 224 | .hero .metadata .item .content { 225 | font-size: 2em; 226 | padding-left: 0.5em; 227 | } 228 | .hero .metadata .item .bottom { 229 | font-weight: bold; 230 | font-size: 0.8em; 231 | } 232 | 233 | /* tasks */ 234 | 235 | .intro-container .intro { 236 | display: flex; 237 | } 238 | 239 | 240 | /* volumes */ 241 | 242 | div.sections div.section { 243 | padding-top: 2em; 244 | } 245 | 246 | .intro-container .eyebrow a { 247 | font-size: 1.2em; 248 | color: #777; 249 | } 250 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/dismissaction/callasfunction().html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | callAsFunction()| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Method 61 |

callAsFunction()

62 |
63 | 64 |
65 |
66 |
67 | Dismisses the view if it is currently presented. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
func callAsFunction()
78 |
79 |
80 |

Discussion

Use this method to attempt to dismiss a presentation. This function is used when you call the function dismiss().

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstyle/automatic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyle.automatic| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyle.automatic

62 |
63 | 64 |
65 |
66 |
67 | The default presentation style chosen by the system. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case automatic
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstyle/custom(transitioningdelegate:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyle.custom(transitioningDelegate:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyle.custom(transitioningDelegate:)

62 |
63 | 64 |
65 |
66 |
67 | A custom view presentation style that is managed by a custom presentation controller and one or more custom animator objects. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case custom(transitioningDelegate: UIViewControllerTransitioningDelegate?)
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstyle/formsheet(properties:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyle.formSheet(properties:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyle.formSheet(properties:)

62 |
63 | 64 |
65 |
66 |
67 | A presentation style that displays the content centered in the screen. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case formSheet(properties: SheetProperties? = nil)
78 |
79 |
80 |
81 |

Parameters

82 |
83 | 84 |
properties
85 |
86 |

properties to assign to UISheetPresentationController

87 |
88 | 89 |
90 |
91 | 92 |
93 |
94 | 95 | 96 | 97 | 98 |
99 | 100 |
101 |
102 |
103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstyle/overcurrentcontext.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyle.overCurrentContext| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyle.overCurrentContext

62 |
63 | 64 |
65 |
66 |
67 | A presentation style where the content is displayed over another view controller’s content. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case overCurrentContext
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstyle/overfullscreen.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyle.overFullScreen| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyle.overFullScreen

62 |
63 | 64 |
65 |
66 |
67 | A view presentation style in which the presented view covers the screen. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case overFullScreen
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstyle/pagesheet(properties:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyle.pageSheet(properties:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyle.pageSheet(properties:)

62 |
63 | 64 |
65 |
66 |
67 | A presentation style that partially covers the underlying content. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case pageSheet(properties: SheetProperties? = nil)
78 |
79 |
80 |
81 |

Parameters

82 |
83 | 84 |
properties
85 |
86 |

properties to assign to UISheetPresentationController

87 |
88 | 89 |
90 |
91 | 92 |
93 |
94 | 95 | 96 | 97 | 98 |
99 | 100 |
101 |
102 |
103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstylecompat/automatic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyleCompat.automatic| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyleCompat.automatic

62 |
63 | 64 |
65 |
66 |
67 | The default presentation style chosen by the system. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case automatic
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstylecompat/custom(transitioningdelegate:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyleCompat.custom(transitioningDelegate:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyleCompat.custom(transitioningDelegate:)

62 |
63 | 64 |
65 |
66 |
67 | A custom view presentation style that is managed by a custom presentation controller and one or more custom animator objects. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case custom(transitioningDelegate: UIViewControllerTransitioningDelegate?)
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstylecompat/formsheet(properties:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyleCompat.formSheet(properties:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyleCompat.formSheet(properties:)

62 |
63 | 64 |
65 |
66 |
67 | A presentation style that displays the content centered in the screen. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case formSheet(properties: SheetPropertiesCompat? = nil)
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstylecompat/overfullscreen.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyleCompat.overFullScreen| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyleCompat.overFullScreen

62 |
63 | 64 |
65 |
66 |
67 | A view presentation style in which the presented view covers the screen. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case overFullScreen
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstylecompat/pagesheet(properties:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyleCompat.pageSheet(properties:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyleCompat.pageSheet(properties:)

62 |
63 | 64 |
65 |
66 |
67 | A presentation style that partially covers the underlying content. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case pageSheet(properties: SheetPropertiesCompat? = nil)
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/modalpresentationstylecompat/popover(permittedarrowdirections:sourcerecttransform:adaptivesheetproperties:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ModalPresentationStyleCompat.popover(permittedArrowDirections:sourceRectTransform:adaptiveSheetProperties:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Case 61 |

ModalPresentationStyleCompat.popover(permittedArrowDirections:sourceRectTransform:adaptiveSheetProperties:)

62 |
63 | 64 |
65 |
66 |
67 | A presentation style where the content is displayed in a popover view. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
case popover(permittedArrowDirections: UIPopoverArrowDirection = .any, sourceRectTransform: ((CGRect) -> CGRect)? = nil, adaptiveSheetProperties: SheetPropertiesCompat? = nil)
78 |
79 |
80 |
81 |

Parameters

82 |
83 | 84 |
permittedArrowDirections
85 |
86 |

The arrow directions that you allow for the popover.

87 |
88 | 89 |
sourceRectTransform
90 |
91 |

allows to change the sourceRect of the UIPopoverPresentationController

92 |
93 | 94 |
95 |
96 | 97 |
98 |
99 | 100 | 101 | 102 | 103 |
104 | 105 |
106 |
107 |
108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/shee_library/librarycontentprovider-implementations.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | LibraryContentProvider Implementations| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | 61 |

LibraryContentProvider Implementations

62 |
63 | 64 | 65 | 66 |
67 |
68 |

Topics

69 | 70 | 71 |
72 |
73 |

Instance Properties

74 |
75 | 76 |
77 | 78 | 89 | 90 |
91 |
92 | 93 |
94 |
95 | 96 | 97 |
98 | 99 |
100 |
101 |
102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/shee_library/modifiers(base:).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | modifiers(base:)| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Method 61 |

modifiers(base:)

62 |
63 | 64 |
65 |
66 |
67 | Inherited from LibraryContentProvider.modifiers(base:). 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
func modifiers(base: AnyView) -> [LibraryItem]
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/shee_library/views.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | views| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 64 | 65 |
66 |
67 | Instance Property 68 |

views

69 |
70 | 71 |
72 |
73 |
74 | Inherited from LibraryContentProvider.views. 75 |
76 |
77 | 78 | 79 | 80 |
81 |
82 |

Declaration

83 |
84 |
var views: [LibraryItem] { get }
85 |
86 |
87 | 88 |
89 |
90 | 91 | 92 | 93 | 94 |
95 | 96 |
97 |
98 |
99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/shee_previews/platform.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | platform| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 64 | 65 |
66 |
67 | Type Property 68 |

platform

69 |
70 | 71 |
72 |
73 |
74 | Inherited from PreviewProvider.platform. 75 |
76 |
77 | 78 | 79 | 80 |
81 |
82 |

Declaration

83 |
84 |
static var platform: PreviewPlatform? { get }
85 |
86 |
87 | 88 |
89 |
90 | 91 | 92 | 93 | 94 |
95 | 96 |
97 |
98 |
99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/shee_previews/previewprovider-implementations.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | PreviewProvider Implementations| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | 61 |

PreviewProvider Implementations

62 |
63 | 64 | 65 | 66 |
67 |
68 |

Topics

69 | 70 | 71 |
72 |
73 |

Type Properties

74 |
75 | 76 |
77 | 78 | 89 | 90 |
91 |
92 | 93 |
94 |
95 | 96 | 97 |
98 | 99 |
100 |
101 |
102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/shee_previews/previews.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | previews| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Type Property 61 |

previews

62 |
63 | 64 |
65 |
66 |
67 | Inherited from PreviewProvider.previews. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
static var previews: some View { get }
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/animatesselecteddetentidentifierchange.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | animatesSelectedDetentIdentifierChange| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

animatesSelectedDetentIdentifierChange

62 |
63 | 64 |
65 |
66 |
67 | Set to true to enforce the sheet to animate adaptation to a newly set selectedDetentIdentifier which is different from the one that has been used previously. Default: false 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var animatesSelectedDetentIdentifierChange: Bool
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/detents.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | detents| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

detents

62 |
63 | 64 |
65 |
66 |
67 | The array of detents that the sheet may rest at. This array must have at least one element. Detents must be specified in order from smallest to largest height. Default: an array of only .large() 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var detents: [UISheetPresentationController.Detent]
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/largestundimmeddetentidentifier.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | largestUndimmedDetentIdentifier| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

largestUndimmedDetentIdentifier

62 |
63 | 64 |
65 |
66 |
67 | The identifier of the largest detent that is not dimmed. When nil or the identifier is not found in detents, all detents are dimmed. Default: nil 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var largestUndimmedDetentIdentifier: UISheetPresentationController.Detent.Identifier?
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/preferredcornerradius.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | preferredCornerRadius| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

preferredCornerRadius

62 |
63 | 64 |
65 |
66 |
67 | The preferred corner radius of the sheet when presented. This value is only respected when the sheet is at the front of its stack. Default: nil (uses system default corner radius in this case) 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var preferredCornerRadius: CGFloat?
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/prefersedgeattachedincompactheight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | prefersEdgeAttachedInCompactHeight| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

prefersEdgeAttachedInCompactHeight

62 |
63 | 64 |
65 |
66 |
67 | Set to true to cause the sheet to layout with an edge-attached appearance in compact height instead of full screen. Default: false 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var prefersEdgeAttachedInCompactHeight: Bool
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/prefersgrabbervisible.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | prefersGrabberVisible| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

prefersGrabberVisible

62 |
63 | 64 |
65 |
66 |
67 | Set to true to show a grabber at the top of the sheet. Default: false 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var prefersGrabberVisible: Bool
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/prefersscrollingexpandswhenscrolledtoedge.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | prefersScrollingExpandsWhenScrolledToEdge| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

prefersScrollingExpandsWhenScrolledToEdge

62 |
63 | 64 |
65 |
66 |
67 | If there is a larger detent to expand to than the selected detent, and a descendent scroll view is scrolled to top, this controls whether scrolling down will expand to a larger detent. Useful to set to false for non-modal sheets, where scrolling in the sheet should not expand the sheet and obscure the content above. Default: true 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var prefersScrollingExpandsWhenScrolledToEdge: Bool
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/selecteddetentidentifier.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | selectedDetentIdentifier| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

selectedDetentIdentifier

62 |
63 | 64 |
65 |
66 |
67 | The identifier of the selected detent. When nil or the identifier is not found in detents, the sheet is displayed at the smallest detent. Default: nil 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var selectedDetentIdentifier: Binding<UISheetPresentationController.Detent.Identifier?>?
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/shouldadjusttosourceview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | shouldAdjustToSourceView| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

shouldAdjustToSourceView

62 |
63 | 64 |
65 |
66 |
67 | Set to true so that the sheet will attempt to visually center itself over the View which it is attached to. Default: false 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var shouldAdjustToSourceView: Bool
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetproperties/widthfollowspreferredcontentsizewhenedgeattached.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | widthFollowsPreferredContentSizeWhenEdgeAttached| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

widthFollowsPreferredContentSizeWhenEdgeAttached

62 |
63 | 64 |
65 |
66 |
67 | Set to true to allow preferredContentSize to influence the width of the sheet when edge-attached. When false, the width of the sheet when edge-attached is always equal to the safe area width of the container. The value of this property is not respected in compact width regular height. Default: false 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var widthFollowsPreferredContentSizeWhenEdgeAttached: Bool
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/sheetpropertiescompat.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | SheetPropertiesCompat| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 50 | 51 |
52 |
53 | Structure 54 |

SheetPropertiesCompat

55 |
56 | 57 |
58 |
59 |
60 | Stub of SheetProperties which has no public initializers and which is used when compiled for iOS 13 or iOS 14. 61 |
62 |
63 | 64 | 65 | 66 |
67 |
68 |

Declaration

69 |
70 |
struct SheetPropertiesCompat
71 |
72 |
73 |

Overview

This stub struct is available for compatibility reasons and requires the consumers to pass nil instead of its instance or omit the properties: argument for the ModalPresentationStyleCompat.formSheet(properties:), ModalPresentationStyleCompat.pageSheet(properties:) and ModalPresentationStyleCompat.popover(permittedArrowDirections:sourceRectTransform:adaptiveSheetProperties:)

74 |
75 |
76 | 77 | 78 | 79 | 80 |
81 | 82 |
83 |
84 |
85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/definespresentationcontext.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | definesPresentationContext| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

definesPresentationContext

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether the presented view is covered when the view or one of its descendants presents a view. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var definesPresentationContext: Bool
78 |
79 |
80 |

Discussion

When using the ModalPresentationStyle.overCurrentContext style to present a view, this property controls which existing view controller in your view controller hierarchy is actually covered by the new content. When a context-based presentation occurs, UIKit starts at the presenting view controller and walks up the view controller hierarchy. If it finds a view controller whose value for this property is true, it asks that view controller to present the new view controller. If no view controller defines the presentation context, UIKit asks the window’s root view controller to handle the presentation.

The default value for this property is false. Some system-provided view controllers, such as UINavigationController, change the default value to true.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/disablesautomatickeyboarddismissal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | disablesAutomaticKeyboardDismissal| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

disablesAutomaticKeyboardDismissal

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether the current input view is dismissed automatically when changing controls. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var disablesAutomaticKeyboardDismissal: Bool?
78 |
79 |
80 |

Discussion

The default value of this property is nil, in which case the presented View uses the true value when the presentation style of the View is set to ModalPresentationStyle.formSheet(properties:) and uses false for other presentation styles. Thus, the system normally does not allow the keyboard to be dismissed for modal forms. Set the explicit value to allow or disallow the dismissal of the current input view (usually the system keyboard) when changing from a control that wants the input view to one that does not. Under normal circumstances, when the user taps a control that requires an input view, the system automatically displays that view. Tapping in a control that does not want an input view subsequently causes the current input view to be dismissed but may not in all cases. You can set the explicit value in those outstanding cases to allow the input view to be dismissed or use this property to prevent the view from being dismissed in other cases.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/focusgroupidentifier.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | focusGroupIdentifier| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

focusGroupIdentifier

62 |
63 | 64 |
65 |
66 |
67 | The identifier of the focus group that this view belongs to. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var focusGroupIdentifier: String?
78 |
79 |
80 |

Discussion

If this is nil, the view inherits the focus group of its parent focus environment.

The default value of this property is nil.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/init().html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | init()| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Initializer 61 |

init()

62 |
63 | 64 |
65 |
66 |
67 | No overview available. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
init()
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/ismodalinpresentation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | isModalInPresentation| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

isModalInPresentation

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether the presentation hosting the View is forced into modal behavior. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var isModalInPresentation: Bool
78 |
79 |
80 |

Discussion

When this is active, the presentation will prevent interactive dismiss and ignore events outside of the presented View bounds until this is set to false.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/modalpresentationcapturesstatusbarappearance.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | modalPresentationCapturesStatusBarAppearance| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

modalPresentationCapturesStatusBarAppearance

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether a View takes over control of status bar appearance from the presenting View. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var modalPresentationCapturesStatusBarAppearance: Bool
78 |
79 |
80 |

Discussion

The default value of this property is false. When you present a View by calling the shee() { ... } method, status bar appearance control is not transferred from the presenting to the presented View. By setting this property to true, you specify the presented view controller controls status bar appearance, even though presented non-fullscreen.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/modaltransitionstyle.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | modalTransitionStyle| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

modalTransitionStyle

62 |
63 | 64 |
65 |
66 |
67 | The transition style to use when presenting the view controller. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var modalTransitionStyle: UIModalTransitionStyle
78 |
79 |
80 |

Discussion

This property determines how the View is animated onscreen when it is presented. To change the transition type, you must set this property before presenting the View. The default value for this property is UIModalTransitionStyle.coverVertical. For a list of possible transition styles, and their compatibility with the available presentation styles, see the UIModalTransitionStyle constant descriptions.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/preferredcontentsize.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | preferredContentSize| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

preferredContentSize

62 |
63 | 64 |
65 |
66 |
67 | The preferred size for the View. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var preferredContentSize: CGSize
78 |
79 |
80 |

Discussion

The value in this property is used primarily when displaying the View in a popover but may also be used in other situations, for example when the View is displayed in a form sheet. Changing the value of this property while the View is being displayed in a popover animates the size change; however, the change is not animated if you specify a width or height of 0.0.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/preferredscreenedgesdeferringsystemgestures.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | preferredScreenEdgesDeferringSystemGestures| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

preferredScreenEdgesDeferringSystemGestures

62 |
63 | 64 |
65 |
66 |
67 | The screen edges for which you want your gestures to take precedence over the system gestures. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var preferredScreenEdgesDeferringSystemGestures: UIRectEdge?
78 |
79 |
80 |

Discussion

Normally, the screen-edge gestures defined by the system take precedence over any gesture recognizers that you define. The system uses its gestures to implement system level behaviors, such as to display Control Center.

Whenever possible, you should allow the system gestures to take precedence. However, immersive apps can use this property to allow app-defined gestures to take precedence over the system gestures. You do that by explicitly setting the screen edges for which your gestures should take precedence.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/preferredstatusbarstyle.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | preferredStatusBarStyle| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

preferredStatusBarStyle

62 |
63 | 64 |
65 |
66 |
67 | The preferred status bar style for the View. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var preferredStatusBarStyle: UIStatusBarStyle?
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/preferredstatusbarupdateanimation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | preferredStatusBarUpdateAnimation| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

preferredStatusBarUpdateAnimation

62 |
63 | 64 |
65 |
66 |
67 | Specifies the animation style to use for hiding and showing the status bar for the View. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var preferredStatusBarUpdateAnimation: UIStatusBarAnimation?
78 |
79 |
80 |

Discussion

Default value is nil, in which case system uses UIStatusBarAnimation.fade. This property comes into play only when you actively change the status bar’s show/hide state by changing the prefersStatusBarHidden attribute.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/prefershomeindicatorautohidden.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | prefersHomeIndicatorAutoHidden| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

prefersHomeIndicatorAutoHidden

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether the system is allowed to hide the visual indicator for returning to the Home screen. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var prefersHomeIndicatorAutoHidden: Bool?
78 |
79 |
80 |

Discussion

Default value is nil, in which case system interprets it as false. Set this value to true if your view lets the system determine when to hide the indicator, or false if you want the indicator shown at all times. The system takes your preference into account, but setting to true is no guarantee that the indicator will be hidden.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/preferspointerlocked.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | prefersPointerLocked| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

prefersPointerLocked

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether the view prefers to lock the pointer to a specific scene. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var prefersPointerLocked: Bool?
78 |
79 |
80 |

Discussion

The default is false. Setting this property to true indicates the view’s preference to lock the pointer, although the system may not honor the request. For the system to consider locking the pointer:

  • The scene must be full screen, not in Split View or Slide Over, with no other apps in Slide Over.

  • The scene must be in the UIScene.ActivationState.foregroundActive state.

  • In Mac Catalyst, the app must be in the foreground, and the window that contains the scene ordered to the front.

The system continuously monitors the state and when the app no longer satisfies the requirements, it disables the pointer lock.

When the lock state changes, the system posts UIPointerLockState.didChangeNotification.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/prefersstatusbarhidden.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | prefersStatusBarHidden| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

prefersStatusBarHidden

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether the view controller prefers the status bar to be hidden or shown. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var prefersStatusBarHidden: Bool?
78 |
79 |
80 | 81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/providespresentationcontexttransitionstyle.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | providesPresentationContextTransitionStyle| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

providesPresentationContextTransitionStyle

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether the view controller specifies the transition style for view controllers it presents. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var providesPresentationContextTransitionStyle: Bool
78 |
79 |
80 |

Discussion

When a view controller’s definesPresentationContext property is true, it can replace the transition style of the presented view with its own. When the value of this property is set to true, the current view’s transition style is used instead of the style associated with the presented view. When the value of this property is false, UIKit uses the transition style of the presented view.

The default value of this property is false.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/documentation/sheekit/uiviewcontrollerproxy/restoresfocusaftertransition.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | restoresFocusAfterTransition| Documentation 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 57 | 58 |
59 |
60 | Instance Property 61 |

restoresFocusAfterTransition

62 |
63 | 64 |
65 |
66 |
67 | Specifies whether an item that previously was focused should again become focused when the item’s view controller becomes visible and focusable. 68 |
69 |
70 | 71 | 72 | 73 |
74 |
75 |

Declaration

76 |
77 |
var restoresFocusAfterTransition: Bool
78 |
79 |
80 |

Discussion

When the value of this property is true, the item that was last focused automatically becomes focused when its view controller becomes visible and focusable. For example, if an item in the view controller is focused and a second view controller is presented, the original item becomes focused again when the second view controller is dismissed.

The default value of this property is true.

81 |
82 |
83 | 84 | 85 | 86 | 87 |
88 | 89 |
90 |
91 |
92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/docs/favicon.ico -------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/images/SwiftUI-FullScreenCoverIsPresented@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/docs/images/SwiftUI-FullScreenCoverIsPresented@2x.png -------------------------------------------------------------------------------- /docs/images/SwiftUI-FullScreenCoverItemOnDismissContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/docs/images/SwiftUI-FullScreenCoverItemOnDismissContent@2x.png -------------------------------------------------------------------------------- /docs/images/SwiftUI-View-PopoverItemContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/docs/images/SwiftUI-View-PopoverItemContent@2x.png -------------------------------------------------------------------------------- /docs/images/SwiftUI-View-PopverIspresentedContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/docs/images/SwiftUI-View-PopverIspresentedContent@2x.png -------------------------------------------------------------------------------- /docs/images/SwiftUI-View-SheetIsPresentingContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/docs/images/SwiftUI-View-SheetIsPresentingContent@2x.png -------------------------------------------------------------------------------- /docs/images/SwiftUI-View-SheetItemContent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edudnyk/SheeKit/4bdc3b7ff784b893ec8f802e4154cd0d0bdf1b46/docs/images/SwiftUI-View-SheetItemContent@2x.png -------------------------------------------------------------------------------- /docs/img/added-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/deprecated-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/modified-icon.svg: -------------------------------------------------------------------------------- 1 | --------------------------------------------------------------------------------