일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- init?
- Bug
- @EnvironmentObject
- typeorm
- Creating Operators
- IOS
- SwiftUI
- init
- nonisolated
- operator
- subject
- URL(string:)
- Operators
- @Binding
- nestjs
- NavigationLink
- RxCocoa
- vim
- RxSwift
- dismiss
- swift6
- Xcode
- NullObject
- @Environment
- Operater
- RFC1738/1808
- @State
- graphql
- SWIFT
- ios14
- Today
- Total
Tunko Development Diary
SwiftUI)@Environment 와 @EnvironmentObject 본문
@Environment 와 @EnvironmentObject 차이점
SwiftUI 는 @Environment와 @EnvironmentObject 속성래퍼를 모두 제공합니다.
@EnvironmentObject는 환경에 임의 값을 주입할 수 있는 반면
@Environment는 특히 Swift와 함께 작업하기 위해서 존재합니다.
Swift에서 사용하기 위해 미리 지정된 Key
@Environment 를 통해서 알 수 있는 정보는 디바이스가 다크모드인지 라이트모드인지 뷰가 렌더링되는 크기 클래스 등 시스템에서 제공하는 고정되어있는 속성에 접근이 가능합니다.
@Environment 핵심 데이터 관리 개체 컨텍스트와 같은 내용을 읽어내는 데 적합합니다.
반면에 @EnvironmentObject 는 특정 뷰내에서 읽기 위해 사용됩니다.
비슷하지만 Object가 붙은 만큼 레퍼런스타입의 객체를 전달합니다.
import SwiftUI
class EnvironmentClass : ObservableObject{
@Published var name : String
@Published var option : String
init(name: String, option: String) {
self.name = name
self.option = option
}
}
struct EnvironmentTest: View {
@StateObject var envClass = EnvironmentClass(name: "Tunk", option: "😀")
var body: some View {
VStack{
Text("EnvironmentTest")
NextView()
.environmentObject(envClass)
}
}
}
struct NextView : View {
@EnvironmentObject var envClass : EnvironmentClass
var body: some View {
Text("NextView name :\\(envClass.name) option :\\(envClass.option)")
}
}
EnvironmentClass 라는 클래스를 선언합니다.
그리고 EnvironmentTest 뷰에서 NextView 뷰를 사용할때 .environmentObject 수식어를 통해서 envClass 를 전달합니다.
NextView 뷰에서는 @EnvironmentObject var envClass : EnvironmentClass
이렇게 선언해서 전달 받은 envClass의 값을 가져와 사용할 수 있습니다.
@Environment
앞서 설명한것처럼 @Environment는 Swift가 여러 유용한 속성을 이리 정해둔것입니다.
@Environment(\\.description) var description : String
을 출력해보면 각종 정의된 속성을 볼 수 있습니다.
이를 잘 활용하면 개발에 매우 유용하게 사용할 수 있습니다.
개인적으로 가장 많이 애용하는건 dismiss 입니다. 😀
EnvironmentPropertyKey<IsContentScrollViewManaged> = true,
EnvironmentPropertyKey<ManagedBarAppearancesKey> = [],
EnvironmentPropertyKey<ToolbarEnabledKey> = true,
EnvironmentPropertyKey<NavigationObserverKey> = true,
EnvironmentPropertyKey<EditModeKey> = Optional(SwiftUI.Binding<SwiftUI.EditMode>(transaction: SwiftUI.Transaction(plist: []), location: SwiftUI.StoredLocation<SwiftUI.EditMode>, _value: SwiftUI.EditMode.inactive)),
EnvironmentPropertyKey<ResetFocusKey> = _ResetFocusAction(bridge: Optional(SwiftUI.FocusBridge)),
EnvironmentPropertyKey<FocusBridgeKey> = WeakBox<FocusBridge>(base: Optional(SwiftUI.FocusBridge)),
EnvironmentPropertyKey<ToolbarUpdateContextKey> = Optional(SwiftUI.Toolbar.UpdateContext(overrides: SwiftUI.HostingControllerOverrides(pushTarget: nil, navigation: nil, split: nil), navigationController: Optional(<SwiftUI.UIKitNavigationController: 0x10581d400>), targetController: Optional(<_TtGC7SwiftUI19UIHostingControllerVVS_19BridgedPresentation8RootView_: 0x109820800>), pointerBridgeParent: nil, horizontalSizeClass: SwiftUI.SizeClass.regular, verticalSizeClass: SwiftUI.SizeClass.regular, customLocations: [])),
EnvironmentPropertyKey<SuppliedBridgesKey> = HostingControllerBridges(rawValue: 53),
EnvironmentPropertyKey<SafeAreaTransitionStateKey> = Value(base: Optional(SwiftUI.ToolbarSafeAreaTransitionState)),
EnvironmentPropertyKey<SuppliedBridgesKey> = HostingControllerBridges(rawValue: 52),
EnvironmentPropertyKey<PrimaryBarColorScheme> = nil,
EnvironmentPropertyKey<PrimaryBarBackgroundVisibilityKey> = hidden,
EnvironmentPropertyKey<HostingControllerManagedBarsKey> = [],
EnvironmentPropertyKey<NavigationEnabledKey> = enabled,
EnvironmentPropertyKey<PresentationModeKey> = Binding<PresentationMode>(transaction: SwiftUI.Transaction(plist: []), location: SwiftUI.LocationBox<SwiftUI.FunctionalLocation<SwiftUI.PresentationMode>>, _value: SwiftUI.PresentationMode(isPresented: true)),
EnvironmentPropertyKey<SuppliedBridgesKey> = HostingControllerBridges(rawValue: 36),
EnvironmentPropertyKey<PresentationModeKey> = Binding<PresentationMode>(transaction: SwiftUI.Transaction(plist: []), location: SwiftUI.LocationBox<SwiftUI.UIKitPresentationModeLocation<SwiftUI.BridgedPresentation.RootView>>, _value: SwiftUI.PresentationMode(isPresented: true)),
EnvironmentPropertyKey<AccentColorKey> = Optional(#0A84FFFF),
EnvironmentPropertyKey<PreferenceBridgeKey> = Value(value: Optional(SwiftUI.PreferenceBridge)),
EnvironmentPropertyKey<IsContentScrollViewManaged> = false,
EnvironmentPropertyKey<ManagedBarAppearancesKey> = [SwiftUI.ToolbarPlacement.Role.bottomBar, SwiftUI.ToolbarPlacement.Role.navigationBar],
EnvironmentPropertyKey<ToolbarEnabledKey> = false,
EnvironmentPropertyKey<NavigationObserverKey> = false,
EnvironmentPropertyKey<HostingControllerManagedBarsKey> = [SwiftUI.ToolbarPlacement.Role.bottomBar, SwiftUI.ToolbarPlacement.Role.navigationBar],
EnvironmentPropertyKey<SuppliedBridgesKey> = HostingControllerBridges(rawValue: 32),
EnvironmentPropertyKey<SceneStorageValuesKey> = Optional(SwiftUI.WeakBox<SwiftUI.SceneStorageValues>(base: Optional(SwiftUI.SceneStorageValues))),
EnvironmentPropertyKey<StoreKey<SceneBridge>> = Optional(SceneBridge: rootViewController = Optional(<_TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier__: 0x106019600>)),
EnvironmentPropertyKey<AppNavigationV3AuthorityKey> = Optional(SwiftUI.WeakBox<SwiftUI.AppNavigationV3Authority>(base: Optional(SwiftUI.AppNavigationV3Authority))),
EnvironmentPropertyKey<EditModeKey> = Optional(SwiftUI.Binding<SwiftUI.EditMode>(transaction: SwiftUI.Transaction(plist: []), location: SwiftUI.StoredLocation<SwiftUI.EditMode>, _value: SwiftUI.EditMode.inactive)),
EnvironmentPropertyKey<CanTakeFocusKey> = true,
EnvironmentPropertyKey<InstalledInWindowKey> = true,
EnvironmentPropertyKey<ResetFocusKey> = _ResetFocusAction(bridge: Optional(SwiftUI.FocusBridge)),
EnvironmentPropertyKey<IsPlatformFocusSystemEnabled> = false,
EnvironmentPropertyKey<IsFocusedKey> = false,
EnvironmentPropertyKey<FocusBridgeKey> = WeakBox<FocusBridge>(base: Optional(SwiftUI.FocusBridge)),
EnvironmentPropertyKey<ActiveContextMenuKey> = ViewIdentity(seed: 0),
EnvironmentPropertyKey<ToolbarUpdateContextKey> = Optional(SwiftUI.Toolbar.UpdateContext(overrides: SwiftUI.HostingControllerOverrides(pushTarget: nil, navigation: nil, split: nil), navigationController: nil, targetController: Optional(<_TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier__: 0x106019600>), pointerBridgeParent: nil, horizontalSizeClass: SwiftUI.SizeClass.regular, verticalSizeClass: SwiftUI.SizeClass.regular, customLocations: [])),
EnvironmentPropertyKey<SuppliedBridgesKey> = HostingControllerBridges(rawValue: 49),
EnvironmentPropertyKey<InputAccessoryKey> = WeakBox<InputAccessoryGenerator<UIKitToolbar>>(base: nil),
EnvironmentPropertyKey<SuppliedBridgesKey> = HostingControllerBridges(rawValue: 48),
EnvironmentPropertyKey<HostingControllerManagedBarsKey> = [],
EnvironmentPropertyKey<AlwaysOnInvalidationKey> = TimelineInvalidationAction(invalidate: (Function)),
EnvironmentPropertyKey<AlwaysOnFrameSpecifier> = nil,
EnvironmentPropertyKey<SuppliedBridgesKey> = HostingControllerBridges(rawValue: 32),
EnvironmentPropertyKey<Key> = Optional(SwiftUI.NavigationV3Authority(host: Optional(<_TtGC7SwiftUI14_UIHostingViewGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier__: 0x10520a720; frame = (0 0; 375 812); autoresize = W+H; gestureRecognizers = <NSArray: 0x2826d4f00>; backgroundColor = <UIDynamicSystemColor: 0x283ddb7c0; name = systemBackgroundColor>; layer = <CALayer: 0x282898620>>))),
EnvironmentPropertyKey<MultimodalListLayoutKey> = grid,
EnvironmentPropertyKey<AdminModeEnabledKey> = false,
EnvironmentPropertyKey<NavigationBarHostKey> = app,
EnvironmentPropertyKey<PresentationModeKey> = Binding<PresentationMode>(transaction: SwiftUI.Transaction(plist: []), location: SwiftUI.LocationBox<SwiftUI.UIKitPresentationModeLocation<SwiftUI.ModifiedContent<SwiftUI.AnyView, SwiftUI.RootModifier>>>, _value: SwiftUI.PresentationMode(isPresented: false)),
EnvironmentPropertyKey<AccessibilityRequestFocusKey> = AccessibilityRequestFocusAction(onAccessibilityFocus: nil),
EnvironmentPropertyKey<AccentColorKey> = Optional(#0A84FFFF),
EnvironmentPropertyKey<UndoManagerKey> = Optional(<NSUndoManager: 0x283dcb000>),
EnvironmentPropertyKey<SceneSessionKey> = Optional(SwiftUI.WeakBox<__C.UISceneSession>(base: Optional(<UISceneSession: 0x283dcfe80; role: UIWindowSceneSessionRoleApplication; persistentIdentifier: B56E5E15-38D7-4C1E-A95B-9684EE30A5F0> {
scene = <UIWindowScene: 0x105204ea0>;
configuration = <UISceneConfiguration: 0x283dcfc40; name: 0x0; role: UIWindowSceneSessionRoleApplication> {
sceneClass = 0x0;
delegateClass = SwiftUI.AppSceneDelegate;
storyboard = 0x0;
};
}))),
EnvironmentPropertyKey<SystemColorSchemeKey> = dark,
EnvironmentPropertyKey<ExplicitPreferredColorSchemeKey> = nil,
EnvironmentPropertyKey<AccessibilityQuickActionsKey> = false,
EnvironmentPropertyKey<AccessibilityLargeContentViewerKey> = false,
EnvironmentPropertyKey<EnabledTechnologiesKey> = AccessibilityTechnologies(technologySet: SwiftUI.(unknown context at $1b3fd73a8).AccessibilityTechnologySet(rawValue: 4)),
EnvironmentPropertyKey<AccessibilityButtonShapesKey> = false,
EnvironmentPropertyKey<AccessibilityPrefersCrossFadeTransitionsKey> = false,
EnvironmentPropertyKey<AccessibilityInvertColorsKey> = false,
EnvironmentPropertyKey<AccessibilityReduceMotionKey> = false,
EnvironmentPropertyKey<AccessibilityReduceTransparencyKey> = false,
EnvironmentPropertyKey<AccessibilityDifferentiateWithoutColorKey> = false,
EnvironmentPropertyKey<DisplayCornerRadiusKey> = Optional(39.0),
EnvironmentPropertyKey<BackgroundInfoKey> = BackgroundInfo(layer: 0, groupCount: 0),
EnvironmentPropertyKey<VerticalUserInterfaceSizeClassKey> = Optional(SwiftUI.UserInterfaceSizeClass.regular),
EnvironmentPropertyKey<HorizontalUserInterfaceSizeClassKey> = Optional(SwiftUI.UserInterfaceSizeClass.compact),
EnvironmentPropertyKey<DisplayScaleKey> = 3.0,
EnvironmentPropertyKey<ColorSchemeKey> = dark,
EnvironmentPropertyKey<ColorSchemeContrastKey> = standard,
EnvironmentPropertyKey<UpdateFidelityKey> = BLSUpdateFidelity(rawValue: 0),
EnvironmentPropertyKey<ReducedLuminanceKey> = false,
EnvironmentPropertyKey<DisplayGamutKey> = displayP3,
EnvironmentPropertyKey<LegibilityWeightKey> = Optional(SwiftUI.LegibilityWeight.regular),
EnvironmentPropertyKey<DynamicTypeSizeKey> = xSmall,
EnvironmentPropertyKey<LayoutDirectionKey> = leftToRight,
EnvironmentPropertyKey<SceneKeyboardShortcutsKey> = [:],
EnvironmentPropertyKey<OpenWindowActionKey> = OpenWindowAction(strategy: Optional(SwiftUI.SceneNavigationStrategy_Phone())),
EnvironmentPropertyKey<ScenePhaseKey> = active,
EnvironmentPropertyKey<TimeZoneKey> = Asia/Seoul (fixed (equal to current)),
EnvironmentPropertyKey<CalendarKey> = gregorian (current),
EnvironmentPropertyKey<LocaleKey> = en_KR (current)]
접근성
[var accessibilityDifferentiateWithoutColor: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilitydifferentiatewithoutcolor>)
색상 없이 구분에 대한 시스템 기본 설정이 활성화되었는지 여부.
[var accessibilityEnabled: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityenabled>)
사용자가 보조 기술을 활성화했는지 여부를 나타내는 부울 값입니다.
[var accessibilityInvertColors: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityinvertcolors>)
색상 반전에 대한 시스템 기본 설정이 활성화되었는지 여부.
[var accessibilityLargeContentViewerEnabled: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilitylargecontentviewerenabled>)
대용량 콘텐츠 뷰어의 활성화 여부입니다.
[var accessibilityReduceMotion: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityreducemotion>)
모션 감소에 대한 시스템 기본 설정이 활성화되었는지 여부입니다.
[var accessibilityReduceTransparency: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityreducetransparency>)
투명도 줄이기에 대한 시스템 기본 설정이 활성화되었는지 여부.
[var accessibilityQuickActionsEnabled: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityquickactionsenabled>)
빠른 작업 기능이 활성화되었는지 여부를 나타내는 부울입니다.
[var accessibilityShowButtonShapes: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityshowbuttonshapes>)
버튼 모양 표시에 대한 시스템 기본 설정이 활성화되었는지 여부.
[var accessibilitySwitchControlEnabled: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityswitchcontrolenabled>)
스위치 제어 모터 접근성 기능이 사용 중인지 여부를 나타내는 부울 값입니다.
[var accessibilityVoiceOverEnabled: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/accessibilityvoiceoverenabled>)
VoiceOver 화면 판독기가 사용 중인지 여부를 나타내는 부울 값입니다.
[var legibilityWeight: LegibilityWeight?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/legibilityweight>)
텍스트에 적용할 글꼴 두께입니다.
행위
[var dismiss: DismissAction]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/dismiss>)
현재 프레젠테이션을 닫는 작업입니다.
[var dismissSearch: DismissSearchAction] (<https://developer.apple.com/documentation/swiftui/environmentvalues/dismisssearch>)
현재 검색 상호 작용을 종료하는 작업입니다.
[var newDocument: NewDocumentAction] (<https://developer.apple.com/documentation/swiftui/environmentvalues/newdocument>)
새 문서를 표시하는 작업입니다.
[var openDocument: OpenDocumentAction] (<https://developer.apple.com/documentation/swiftui/environmentvalues/opendocument>)
기존 문서를 표시하는 작업입니다.
[var openURL: OpenURLAction]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/openurl>)
URL을 여는 작업입니다.
[var openWindow: OpenWindowAction] (<https://developer.apple.com/documentation/swiftui/environmentvalues/openwindow>)
창을 표시하는 작업입니다.
[var refresh: RefreshAction?]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/refresh>)
보기 환경에 저장된 새로 고침 작업입니다.
[var rename: RenameAction?]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/rename>)
표준 이름 바꾸기 상호 작용을 활성화하는 작업입니다.
[var resetFocus: ResetFocusAction] (<https://developer.apple.com/documentation/swiftui/environmentvalues/resetfocus>)
포커스 시스템이 기본 포커스를 다시 평가하도록 요청하는 작업입니다.
컨트롤 및 입력
[var controlSize: ControlSize]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/controlsize>)
보기 내의 컨트롤에 적용할 크기입니다.
[var controlActiveState: ControlActiveState] (<https://developer.apple.com/documentation/swiftui/environmentvalues/controlactivestate>)
보기에 있는 컨트롤의 활성 상태입니다.
[var defaultWheelPickerItemHeight: CGFloat] (<https://developer.apple.com/documentation/swiftui/environmentvalues/defaultwheelpickeritemheight>)
날짜 선택기와 같은 휠 스타일 선택기에서 항목의 기본 높이입니다.
[var keyboardShortcut: KeyboardShortcut?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/keyboardshortcut>)
이 환경의 버튼이 트리거되는 키보드 단축키입니다.
[var menuIndicatorVisibility: Visibility] (<https://developer.apple.com/documentation/swiftui/environmentvalues/menuindicatorvisibility>)
보기 내의 컨트롤에 적용할 메뉴 표시기 가시성입니다.
[var menuOrder: MenuOrder]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/menuorder>)
이 보기에서 표시되는 메뉴의 기본 항목 순서입니다.
[var searchSuggestionsPlacement: SearchSuggestionsPlacement] (<https://developer.apple.com/documentation/swiftui/environmentvalues/searchsuggestionsplacement>)
추천 검색어의 현재 위치입니다.
디스플레이 특성
[var colorScheme: ColorScheme] (<https://developer.apple.com/documentation/swiftui/environmentvalues/colorscheme>)
이 환경의 색 구성표입니다.
[var colorSchemeContrast: ColorSchemeContrast] (<https://developer.apple.com/documentation/swiftui/environmentvalues/colorschemecontrast>)
이 환경의 색 구성표와 관련된 대비입니다.
[var displayScale: CGFloat]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/displayscale>)
이 환경의 표시 배율입니다.
[var horizontalSizeClass: UserInterfaceSizeClass?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/horizontalsizeclass>)
이 환경의 수평 크기 클래스입니다.
[var imageScale: Image.Scale]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/imagescale>)
이 환경의 이미지 스케일입니다.
[var pixelLength: CGFloat]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/pixellength>)
화면의 픽셀 크기입니다.
[var verticalSizeClass: UserInterfaceSizeClass?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/verticalsizeclass>)
이 환경의 수직 크기 클래스입니다.
전역 개체
[var calendar: Calendar]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/calendar>)
날짜를 처리할 때 보기가 사용해야 하는 현재 달력입니다.
[var locale: Locale]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/locale>)
보기가 사용해야 하는 현재 로케일입니다.
[var managedObjectContext: NSManagedObjectContext] (<https://developer.apple.com/documentation/swiftui/environmentvalues/managedobjectcontext>)
[var timeZone: TimeZone]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/timezone>)
날짜를 처리할 때 보기가 사용해야 하는 현재 시간대입니다.
[var undoManager: UndoManager?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/undomanager>)
보기의 실행 취소 작업을 등록하는 데 사용되는 실행 취소 관리자입니다.
스크롤링
[var isScrollEnabled: Bool]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/isscrollenabled>)
이 환경과 연결된 스크롤 보기가 스크롤을 허용하는지 여부를 나타내는 부울 값입니다.
[var horizontalScrollIndicatorVisibility: ScrollIndicatorVisibility] (<https://developer.apple.com/documentation/swiftui/environmentvalues/horizontalscrollindicatorvisibility>)
가로로 스크롤 가능한 콘텐츠의 스크롤 표시기에 적용할 가시성입니다.
[var verticalScrollIndicatorVisibility: ScrollIndicatorVisibility] (<https://developer.apple.com/documentation/swiftui/environmentvalues/verticalscrollindicatorvisibility>)
세로로 스크롤 가능한 콘텐츠의 스크롤 표시기에 적용할 가시성입니다.
[var scrollDismissesKeyboardMode: ScrollDismissesKeyboardMode] (<https://developer.apple.com/documentation/swiftui/environmentvalues/scrolldismisseskeyboardmode>)
스크롤 가능한 콘텐츠가 소프트웨어 키보드와 상호 작용하는 방식입니다.
상태
[var editMode: Binding?]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/editmode>)
사용자가 이 환경과 연관된 보기의 컨텐츠를 편집할 수 있는지 여부를 표시합니다.
[var isEnabled: Bool]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/isenabled>)
이 환경과 연결된 보기가 사용자 상호 작용을 허용하는지 여부를 나타내는 부울 값입니다.
[var isFocused: Bool]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/isfocused>)
가장 가까운 포커스 가능한 조상에 포커스가 있는지 여부를 반환합니다.
[var isLuminanceReduced: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/isluminancereduced>)
디스플레이 또는 환경에 현재 감소된 휘도가 필요한지 여부를 나타내는 부울 값입니다.
[var isPresented: Bool]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/ispresented>)
이 환경과 연결된 보기가 현재 표시되는지 여부를 나타내는 부울 값입니다.
[var isSearching: Bool]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/issearching>)
사용자가 검색할 때를 나타내는 부울 값입니다.
[var scenePhase: ScenePhase]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/scenephase>)
장면의 현재 단계입니다.
[var supportsMultipleWindows: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/supportsmultiplewindows>)
현재 플랫폼이 여러 창 열기를 지원하는지 여부를 나타내는 부울입니다.
스토어킷 구성
[var displayStoreKitMessage: DisplayMessageAction] (<https://developer.apple.com/documentation/swiftui/environmentvalues/displaystorekitmessage>)
[var requestReview: RequestReviewAction] (<https://developer.apple.com/documentation/swiftui/environmentvalues/requestreview>)
텍스트 스타일
[var allowsTightening: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/allowstightening>)
텍스트를 사용 가능한 공간에 맞추기 위해 문자 간 간격을 좁혀야 하는지 여부를 나타내는 부울 값입니다.
[var autocorrectionDisabled: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/autocorrectiondisabled>)
보기 계층 구조에 자동 수정이 활성화되어 있는지 여부를 결정하는 부울 값입니다.
[var dynamicTypeSize: DynamicTypeSize] (<https://developer.apple.com/documentation/swiftui/environmentvalues/dynamictypesize>)
현재 동적 유형 크기입니다.
[var font: Font?]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/font>)
이 환경의 기본 글꼴입니다.
[var layoutDirection: LayoutDirection] (<https://developer.apple.com/documentation/swiftui/environmentvalues/layoutdirection>)
현재 환경과 연결된 레이아웃 방향입니다.
[var lineLimit: Int?]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/linelimit>)
보기에서 텍스트가 차지할 수 있는 최대 줄 수입니다.
[var lineSpacing: CGFloat]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/linespacing>)
한 줄 조각의 맨 아래와 다음 조각의 맨 위 사이의 거리(포인트 단위)입니다.
[var minimumScaleFactor: CGFloat] (<https://developer.apple.com/documentation/swiftui/environmentvalues/minimumscalefactor>)
사용 가능한 공간에 텍스트를 맞추기 위해 글꼴 크기를 축소하기 위한 최소 허용 비율입니다.
[var multilineTextAlignment: TextAlignment] (<https://developer.apple.com/documentation/swiftui/environmentvalues/multilinetextalignment>)
내용이 줄 바꿈되거나 줄 바꿈이 포함될 때 텍스트 인스턴스가 줄을 정렬하는 방법을 나타내는 값입니다.
[var textCase: Text.Case?]
(<https://developer.apple.com/documentation/swiftui/environmentvalues/textcase>)
Text환경의 로케일을 사용하여 표시될 때 의 대소문자를 변환하는 스타일 재정의 입니다.
[var truncationMode: Text.TruncationMode] (<https://developer.apple.com/documentation/swiftui/environmentvalues/truncationmode>)
레이아웃이 사용 가능한 공간에 맞게 텍스트의 마지막 줄을 자르는 방법을 나타내는 값입니다.
속성 보기
[var backgroundMaterial: Material?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/backgroundmaterial>)
현재 보기 아래에 있는 재료입니다.
[var backgroundStyle: AnyShapeStyle?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/backgroundstyle>)
설정 시 기본 시스템 배경 스타일을 재정의하는 선택적 스타일입니다.
[var contentTransition: ContentTransition] (<https://developer.apple.com/documentation/swiftui/environmentvalues/contenttransition>)
보기의 내용에 애니메이션을 적용하는 현재 방법입니다.
[var contentTransitionAddsDrawingGroup: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/contenttransitionaddsdrawinggroup>)
콘텐츠 전환을 렌더링하는 보기가 GPU 가속 렌더링을 사용하는지 여부를 제어하는 부울 값입니다.
[var defaultMinListHeaderHeight: CGFloat?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/defaultminlistheaderheight>)
목록에 있는 헤더의 기본 최소 높이입니다.
[var defaultMinListRowHeight: CGFloat] (<https://developer.apple.com/documentation/swiftui/environmentvalues/defaultminlistrowheight>)
목록에 있는 행의 기본 최소 높이입니다.
[var headerProminence: Prominence] (<https://developer.apple.com/documentation/swiftui/environmentvalues/headerprominence>)
보기 내 섹션 헤더에 적용할 중요도입니다.
[var redactionReasons: RedactionReasons] (<https://developer.apple.com/documentation/swiftui/environmentvalues/redactionreasons>)
보기 계층 구조에 적용된 현재 수정 이유입니다.
[var symbolRenderingMode: SymbolRenderingMode?] (<https://developer.apple.com/documentation/swiftui/environmentvalues/symbolrenderingmode>)
현재 심볼 렌더링 모드 또는 nil현재 이미지와 전경 스타일을 매개변수로 사용하여 모드가 자동으로 선택됨을 나타냅니다.
[var symbolVariants: SymbolVariants] (<https://developer.apple.com/documentation/swiftui/environmentvalues/symbolvariants>)
이 환경에서 사용할 기호 변형입니다.
위젯
[var showsWidgetLabel: Bool] (<https://developer.apple.com/documentation/swiftui/environmentvalues/showswidgetlabel>)
액세서리 제품군 위젯이 액세서리 레이블을 표시할 수 있는지 여부를 나타내는 부울 값입니다.
[var widgetFamily: WidgetFamily] (<https://developer.apple.com/documentation/swiftui/environmentvalues/widgetfamily>)
위젯 템플릿 - 소형, 중형 또는 대형.
[var widgetRenderingMode: WidgetRenderingMode] (<https://developer.apple.com/documentation/swiftui/environmentvalues/widgetrenderingmode>)
시스템에서 위젯을 표시하는 위치를 기반으로 하는 위젯의 렌더링 모드입니다.
요약
@EnvironmentObject 는 직접 전달해준 객체를 받아 사용할때 사용
@Environment 는 Swift내부에 이미 선언되어있는 각종 유용한 속성값을 가져와 사용
'Development > SwiftUI' 카테고리의 다른 글
SwiftUI) 알아두면 편한 FixedSize! (0) | 2022.10.12 |
---|---|
SwiftUI) @Environment와 dismiss를 사용하는 올바른 방법 (0) | 2022.10.03 |
SwiftUI) @State와 @Binding 란? (0) | 2022.09.28 |
SwiftUI) @State 란? (0) | 2022.09.27 |
SwiftUI) property wrappers 종류 (2) | 2022.09.26 |