Components
ZStack
A SwiftUI ZStack component for overlapping layouts.
Expo UI ZStack matches the official SwiftUI ZStack API and overlays its children on top of each other.
Usage
Basic overlapping stack
import { Host, ZStack, Rectangle, Text } from '@expo/ui/swift-ui';
import {
frame,
foregroundStyle,
} from '@expo/ui/swift-ui/modifiers';
export default function BasicZStackExample() {
return (
<Host style={{ flex: 1 }}>
<ZStack>
<Rectangle
modifiers={[
frame({ width: 100, height: 100 }),
foregroundStyle('blue'),
]}
/>
<Text modifiers={[foregroundStyle('white')]}>Overlay</Text>
</ZStack>
</Host>
);
}With alignment
The alignment prop controls how children are positioned within the stack. Available options include: center, leading, trailing, top, bottom, topLeading, topTrailing, bottomLeading, and bottomTrailing.
import { Host, ZStack, Rectangle, Circle } from '@expo/ui/swift-ui';
import {
frame,
foregroundStyle,
} from '@expo/ui/swift-ui/modifiers';
export default function ZStackAlignmentExample() {
return (
<Host style={{ flex: 1 }}>
<ZStack alignment="bottomTrailing">
<Rectangle
modifiers={[
frame({ width: 100, height: 100 }),
foregroundStyle('blue'),
]}
/>
<Circle
modifiers={[
frame({ width: 30, height: 30 }),
foregroundStyle('red'),
]}
/>
</ZStack>
</Host>
);
}Creating a badge overlay
import {
Host,
ZStack,
Circle,
Text,
Image,
} from '@expo/ui/swift-ui';
import {
frame,
foregroundStyle,
} from '@expo/ui/swift-ui/modifiers';
export default function ZStackBadgeExample() {
return (
<Host style={{ flex: 1 }}>
<ZStack alignment="topTrailing">
<Image systemName="bell.fill" size={32} color="blue" />
<Circle
modifiers={[
frame({ width: 16, height: 16 }),
foregroundStyle('red'),
]}
/>
</ZStack>
</Host>
);
}API
import { ZStack } from '@expo/ui/swift-ui';Component
ZStack
Type: React.Element<ZStackProps>
ZStackProps
alignment
Optional • Type: Alignment
The alignment of children within the stack.
children
Type: ReactNode
Inherited props
Modifiers
Use these modifiers in the modifiers prop of the SwiftUI version.
Modifiers for any view
accessibilityAddTraitsaccessibilityElementaccessibilityHiddenaccessibilityHintaccessibilityIdentifieraccessibilityInputLabelsaccessibilityLabelaccessibilityRemoveTraitsaccessibilityValueactivityBackgroundTintalignmentGuideallowsTighteninganimationaspectRatiobackgroundbackgroundOverlayblurboldborderbrightnessclippedclipShapecolorInvertcontainerBackgroundcontainerRelativeFrameiOS 17+containerShapecontentShapecontentTransitioniOS 16+contrastcornerRadiuscreateModifierdisableddynamicTypeSizeenvironmentfixedSizefontforegroundColorforegroundStyleframegeometryGroupiOS 17+glassEffectglassEffectIdgrayscalegridCellAnchoriOS 16+gridCellColumnsgridCellUnsizedAxesgridColumnAlignmentiOS 16+hiddenhueRotationidignoreSafeAreaimageScaleinvalidatableContentiOS 17+italickerninglayoutPrioritylineHeightiOS 26+lineLimitlineSpacingluminanceToAlphamaskmatchedGeometryEffectminimumScaleFactormonospacedDigitmultilineTextAlignmentoffsetonAppearonDisappearonGeometryChangeonLongPressGestureonTapGestureopacityoverlaypaddingprivacySensitiveredactedrotation3DEffectrotationEffectsaturationscaleEffectshadowstrikethroughstrokeBordertextCasetinttruncationModeunderlineunredactedwidgetURLzIndex
Sources
The original Expo docs for this page:
- ZStack (SwiftUI) (
source-of-truth/versions/v57.0.0/sdk/ui/swift-ui/zstack.md)