Repository navigation
UIKit iOS xcode27.2 b3
Alex Soto edited this page Oct 17, 2026
·
1 revision
#UIKit.framework
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h 2026-09-23 01:54:39
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitCore.h 2026-10-09 03:00:46
@@ -291,6 +291,7 @@
#import <UIKit/UIAlert.h>
#import <UIKit/UIAccessibilityLocationDescriptor.h>
#import <UIKit/UINavigationItem.h>
+#import <UIKit/UITraitNavigationTitleAlignment.h>
#import <UIKit/UIDocumentProperties.h>
#import <UIKit/UIAccessibilityAdditions.h>
#import <UIKit/UITimingParameters.h>
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINavigationItem.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINavigationItem.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINavigationItem.h 2026-09-23 01:54:55
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UINavigationItem.h 2026-10-08 04:50:54
@@ -82,6 +82,21 @@
UIVerticalBarCompressionBehaviorPrefersTabBar API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos) = 2,
} API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) API_UNAVAILABLE(watchos);
+typedef NS_ENUM(NSInteger, UINavigationItemTitleAlignment) {
+ /// The system determines the alignment.
+ ///
+ /// Typically, the title is centered, but the system may choose to leading align the title based on the context the title is rendered in.
+ /// When read from `UITraitCollection.navigationTitleAlignment`, this means the system has not resolved an alignment for the title.
+ UINavigationItemTitleAlignmentAutomatic = 0,
+ /// The title is leading-aligned.
+ UINavigationItemTitleAlignmentLeading = 1,
+ /// The title is center-aligned.
+ ///
+ /// Unlike Automatic, this never falls back to leading alignment: a title that cannot be centered shifts toward the leading edge to clear
+ /// the trailing bar content, and truncates only once it can shift no further.
+ UINavigationItemTitleAlignmentCenter = 2,
+} NS_SWIFT_NAME(UINavigationItem.TitleAlignment) API_AVAILABLE(ios(27.2), tvos(27.2), visionos(27.2)) API_UNAVAILABLE(watchos);
+
UIKIT_EXTERN API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(tvos, watchos) NS_SWIFT_UI_ACTOR
@protocol UINavigationItemRenameDelegate <NSObject>
@@ -249,6 +264,16 @@
/// Controls how content defined by this item is laid out in the navigation bar.
@property (nonatomic, readwrite, assign) UINavigationItemStyle style API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(tvos, watchos);
+/// The preferred alignment of the navigation bar's title.
+///
+/// The navigation bar resolves the alignment of its title automatically based on context, and the navigation item's style.
+/// Use this property to override the system default.
+///
+/// The alignment the bar actually used is reported by `UITraitCollection.navigationTitleAlignment`.
+///
+/// Defaults to `UINavigationItemTitleAlignmentAutomatic`.
+@property (nonatomic, readwrite, assign) UINavigationItemTitleAlignment titleAlignment API_AVAILABLE(ios(27.2)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
+
/// A view controller that will be shown inside of a navigation controller can assign a UISearchController to this property to display the search controller’s search bar in its containing navigation controller’s navigation bar.
@property (nonatomic, readwrite, strong, nullable) UISearchController *searchController API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(tvos);
@@ -303,7 +328,7 @@
@end
-@interface UINavigationItem (VerticalBar)
+@interface UINavigationItem (/*VerticalBar*/)
/// When the tab bar and navigation/toolbar items are both rendered together
/// in the vertical bar, this property controls which items compress first.
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h 2026-09-23 01:54:57
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h 2026-10-09 03:17:20
@@ -22,6 +22,12 @@
#import <UIKit/UILetterformAwareAdjusting.h>
#import <UIKit/UITextPasteConfigurationSupporting.h>
#import <UIKit/UIInputSuggestion.h>
+#if __has_include(<UIFoundation/NSTextViewportLayoutController.h>)
+#import <UIFoundation/NSTextViewportLayoutController.h>
+#else
+#import <UIKit/NSTextViewportLayoutController.h>
+#endif
+
NS_HEADER_AUDIT_BEGIN(nullability, sendability)
@class UIFindInteraction, UIFont, UIColor, UIMenu, UIMenuElement, UITextView, NSTextContainer, NSTextLayoutManager, NSLayoutManager, NSTextStorage, NSTextAttachment, UITextItem, UITextItemMenuConfiguration, NSTextRange, UITextFormattingViewController, UITextFormattingViewControllerConfiguration, UIWritingToolsCoordinator, NSTextViewportLayoutController, NSTextLayoutFragment;
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITraitNavigationTitleAlignment.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITraitNavigationTitleAlignment.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITraitNavigationTitleAlignment.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITraitNavigationTitleAlignment.h 2026-10-09 03:01:00
@@ -0,0 +1,42 @@
+#if (defined(USE_UIKIT_PUBLIC_HEADERS) && USE_UIKIT_PUBLIC_HEADERS) || !__has_include(<UIKitCore/UITraitNavigationTitleAlignment.h>)
+//
+// UITraitNavigationTitleAlignment.h
+// UIKit
+//
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#import <UIKit/UITrait.h>
+#import <UIKit/UITraitCollection.h>
+#import <UIKit/UINavigationItem.h>
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/// A trait that reports the alignment the navigation bar resolved for its title.
+///
+/// Read this trait from a custom navigation bar title view to discover the alignment the system
+/// chose, so the view can lay out its content to match. When the system has resolved an alignment
+/// the trait reports it, Leading or Center; otherwise it is Automatic.
+///
+/// Use the trait to align content within the size your view already reported, not to decide that
+/// size. Overriding this trait's value will not change the actual alignment in the navigation bar.
+/// That is controlled by `UINavigationItem.titleAlignment`.
+UIKIT_EXTERN NS_REFINED_FOR_SWIFT API_AVAILABLE(ios(27.2), tvos(27.2), visionos(27.2)) API_UNAVAILABLE(watchos)
+@interface UITraitNavigationTitleAlignment : NSObject <UINSIntegerTraitDefinition> // UINavigationItemTitleAlignment
+@end
+
+@interface UITraitCollection (NavigationTitleAlignment)
+
+/// The alignment the navigation bar resolved for its title.
+///
+/// When the system has resolved an alignment for the title, this reports that concrete alignment,
+/// Leading or Center, even when the client has not set a preference. Otherwise it reports Automatic.
+@property (nonatomic, assign, readonly) UINavigationItemTitleAlignment navigationTitleAlignment API_AVAILABLE(ios(27.2), tvos(27.2), visionos(27.2)) API_UNAVAILABLE(watchos);
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+#else
+#import <UIKitCore/UITraitNavigationTitleAlignment.h>
+#endif
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h 2026-09-23 01:41:26
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIView.h 2026-10-09 03:01:00
@@ -26,6 +26,9 @@
#if __has_include(<CoreMotion/CMBody.h>)
#import <CoreMotion/CMBody.h>
#endif
+#if __has_include(<NearbyInteraction/NIBody.h>) && APPLE_FEATURE_NIBODY
+#import <NearbyInteraction/NIBody.h>
+#endif
NS_HEADER_AUDIT_BEGIN(nullability, sendability)
@@ -364,25 +367,25 @@
@interface UIView(UIViewAnimationWithBlocks)
-+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(4.0));
++ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (NS_NOESCAPE ^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(4.0));
-+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(4.0)); // delay = 0.0, options = 0
++ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (NS_NOESCAPE ^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(4.0)); // delay = 0.0, options = 0
-+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations API_AVAILABLE(ios(4.0)); // delay = 0.0, options = 0, completion = NULL
++ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (NS_NOESCAPE ^)(void))animations API_AVAILABLE(ios(4.0)); // delay = 0.0, options = 0, completion = NULL
/* Performs `animations` using a timing curve described by the motion of a spring. The `duration` specified here is a perceptual duration that defines the pace of the spring. This is approximately equal to the settling duration, but for very bouncy springs, will be the duration of the period of oscillation for the spring. When `bounce` is 0, there are no bounces, positive values indicate increasing amounts of bounciness up to a maximum of 1.0 (corresponding to undamped oscillation), and negative values indicate overdamped springs with a minimum value of -1.0. You can use the initial spring velocity to specify how fast the object at the end of the simulated spring was moving before it was attached. It's a unit coordinate system, where 1 is defined as traveling the total animation distance in a second. So if you're changing an object's position by 200pt in this animation, and you want the animation to behave as if the object was moving at 100pt/s before the animation started, you'd pass 0.5. You'll typically want to pass 0 for the velocity. */
+ (void)animateWithSpringDuration:(NSTimeInterval)duration bounce:(CGFloat)bounce initialSpringVelocity:(CGFloat)velocity delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (NS_NOESCAPE ^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(watchos);
/* Performs `animations` using a timing curve described by the motion of a spring. When `dampingRatio` is 1, the animation will smoothly decelerate to its final model values without oscillating. Damping ratios less than 1 will oscillate more and more before coming to a complete stop. You can use the initial spring velocity to specify how fast the object at the end of the simulated spring was moving before it was attached. It's a unit coordinate system, where 1 is defined as traveling the total animation distance in a second. So if you're changing an object's position by 200pt in this animation, and you want the animation to behave as if the object was moving at 100pt/s before the animation started, you'd pass 0.5. You'll typically want to pass 0 for the velocity. */
-+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(7.0));
++ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (NS_NOESCAPE ^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(7.0));
-+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(4.0));
++ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (NS_NOESCAPE ^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(4.0));
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(4.0)); // toView added to fromView.superview, fromView removed from its superview
/* Performs the requested system-provided animation on one or more views. Specify additional animations in the parallelAnimations block. These additional animations will run alongside the system animation with the same timing and duration that the system animation defines/inherits. Additional animations should not modify properties of the view on which the system animation is being performed. Not all system animations honor all available options.
*/
-+ (void)performSystemAnimation:(UISystemAnimation)animation onViews:(NSArray<__kindof UIView *> *)views options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))parallelAnimations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(7.0));
++ (void)performSystemAnimation:(UISystemAnimation)animation onViews:(NSArray<__kindof UIView *> *)views options:(UIViewAnimationOptions)options animations:(void (NS_NOESCAPE ^ __nullable)(void))parallelAnimations completion:(void (^ __nullable)(BOOL finished))completion NS_SWIFT_DISABLE_ASYNC API_AVAILABLE(ios(7.0));
/* Call this method from within an animation block to repeat animations, otherwise has no effect. The total duration of a repeating animation can be computed via (outerAnimationDuration * repeatCount * autoreverses ? 2 : 1). */
+ (void)modifyAnimationsWithRepeatCount:(CGFloat)count autoreverses:(BOOL)autoreverses animations:(void(NS_NOESCAPE ^)(void))animations API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
@@ -391,8 +394,8 @@
@interface UIView (UIViewKeyframeAnimations)
-+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion API_AVAILABLE(ios(7.0));
-+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime relativeDuration:(double)frameDuration animations:(void (^)(void))animations API_AVAILABLE(ios(7.0)); // start time and duration are values between 0.0 and 1.0 specifying time and duration relative to the overall time of the keyframe animation
++ (void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (NS_NOESCAPE ^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion API_AVAILABLE(ios(7.0));
++ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime relativeDuration:(double)frameDuration animations:(void (NS_NOESCAPE ^)(void))animations API_AVAILABLE(ios(7.0)); // start time and duration are values between 0.0 and 1.0 specifying time and duration relative to the overall time of the keyframe animation
@end
@@ -707,6 +710,7 @@
@end
+
@interface UIView (UIContentSizeCategoryLimit)
/// Specify content size category limits. Setting one or both of these properties will limit the
@@ -745,6 +749,7 @@
@end
+
API_AVAILABLE(ios(26.0), tvos(26.0), visionos(26.0)) API_UNAVAILABLE(watchos)
@interface UIView (LayoutRegions)
@@ -785,6 +790,10 @@
#if __has_include(<CoreMotion/CMBody.h>)
@interface UIView () <CMBodyIdentifiable> @end
+#endif
+
+#if __has_include(<NearbyInteraction/NIBody.h>) && APPLE_FEATURE_NIBODY
+@interface UIView () <NIBodyIdentifiable> @end
#endif
NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h 2026-09-23 01:41:36
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h 2026-10-06 01:22:19
@@ -707,6 +707,7 @@
@end
+
@interface UIViewController ()
/// Setting a content unavailable configuration replaces the existing content unavailable view of the view controller with a new content unavailable view instance from the configuration,
@@ -759,46 +760,6 @@
@end
-@protocol UIPreviewActionItem;
-
-@interface UIViewController ()
-
-@property(nonatomic, readonly) NSArray <id <UIPreviewActionItem>> *previewActionItems API_DEPRECATED("UIViewControllerPreviewing is deprecated. Please use UIContextMenuInteraction.", ios(9.0, 13.0)) API_UNAVAILABLE(visionos, watchos);
-
-@end
-
-API_AVAILABLE(ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos)
-@interface UIViewController () <UITraitChangeObservable>
-
-@property (nonatomic, readonly) id<UITraitOverrides> traitOverrides API_AVAILABLE(ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos);
-
-/// Forces an immediate trait update for this view controller and its view, including any view
-/// controllers and views in this subtree. Any trait change callbacks are sent synchronously.
-- (void)updateTraitsIfNeeded API_AVAILABLE(ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos);
-
-@end
-
-typedef NS_ENUM(NSInteger, UIContainerBackgroundStyle) {
- UIContainerBackgroundStyleAutomatic,
- UIContainerBackgroundStyleGlass,
- UIContainerBackgroundStyleHidden
-} API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
-
-@interface UIViewController ()
-
-// Indicates the view controller's preference to be displayed on top of a background.
-// The default value is automatic.
-@property (nonatomic, readonly) UIContainerBackgroundStyle preferredContainerBackgroundStyle API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
-
-// Override this on a custom container view controller to delegate the preference to a child
-// view controller.
-@property (nonatomic, nullable, readonly) UIViewController *childViewControllerForPreferredContainerBackgroundStyle API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
-
-// Needs to be called when `preferredContainerBackgroundStyle` changes.
-- (void)setNeedsUpdateOfPreferredContainerBackgroundStyle API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
-
-@end
-
/// A behavior that determines whether the vertical bar is used.
///
/// Return this type from
@@ -857,6 +818,46 @@
/// ``childViewControllerForPreferredVerticalBarBehavior``.
- (void)setNeedsUpdateOfVerticalBarConfiguration
API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) API_UNAVAILABLE(watchos);
+
+@end
+
+@protocol UIPreviewActionItem;
+
+@interface UIViewController ()
+
+@property(nonatomic, readonly) NSArray <id <UIPreviewActionItem>> *previewActionItems API_DEPRECATED("UIViewControllerPreviewing is deprecated. Please use UIContextMenuInteraction.", ios(9.0, 13.0)) API_UNAVAILABLE(visionos, watchos);
+
+@end
+
+API_AVAILABLE(ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos)
+@interface UIViewController () <UITraitChangeObservable>
+
+@property (nonatomic, readonly) id<UITraitOverrides> traitOverrides API_AVAILABLE(ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos);
+
+/// Forces an immediate trait update for this view controller and its view, including any view
+/// controllers and views in this subtree. Any trait change callbacks are sent synchronously.
+- (void)updateTraitsIfNeeded API_AVAILABLE(ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos);
+
+@end
+
+typedef NS_ENUM(NSInteger, UIContainerBackgroundStyle) {
+ UIContainerBackgroundStyleAutomatic,
+ UIContainerBackgroundStyleGlass,
+ UIContainerBackgroundStyleHidden
+} API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+@interface UIViewController ()
+
+// Indicates the view controller's preference to be displayed on top of a background.
+// The default value is automatic.
+@property (nonatomic, readonly) UIContainerBackgroundStyle preferredContainerBackgroundStyle API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+// Override this on a custom container view controller to delegate the preference to a child
+// view controller.
+@property (nonatomic, nullable, readonly) UIViewController *childViewControllerForPreferredContainerBackgroundStyle API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+// Needs to be called when `preferredContainerBackgroundStyle` changes.
+- (void)setNeedsUpdateOfPreferredContainerBackgroundStyle API_AVAILABLE(visionos(1.0)) API_UNAVAILABLE(ios, watchos, tvos);
@end
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewLayoutRegion.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewLayoutRegion.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewLayoutRegion.h 2026-09-23 01:41:34
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewLayoutRegion.h 2026-10-09 03:01:10
@@ -33,6 +33,20 @@
/// @note Only a single edge is allowed per region.
+ (UIViewLayoutRegion *)layoutRegionForBarOnDirectionalEdge:(NSDirectionalRectEdge)edge extent:(CGFloat)extent API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) API_UNAVAILABLE(watchos);
+/// Returns a bar layout region on a given edge using the
+/// default system bar extent.
+/// @note Only a single edge is allowed per region.
++ (UIViewLayoutRegion *)layoutRegionForBarOnEdge:(UIRectEdge)edge
+ API_AVAILABLE(ios(27.2), tvos(27.2), visionos(27.2)) API_UNAVAILABLE(watchos)
+ NS_REFINED_FOR_SWIFT NS_SWIFT_NAME(__layoutRegionForBar(onEdge:));
+
+/// Returns a bar layout region on a given directional edge using the
+/// default system bar extent.
+/// @note Only a single edge is allowed per region.
++ (UIViewLayoutRegion *)layoutRegionForBarOnDirectionalEdge:(NSDirectionalRectEdge)edge
+ API_AVAILABLE(ios(27.2), tvos(27.2), visionos(27.2)) API_UNAVAILABLE(watchos)
+ NS_REFINED_FOR_SWIFT NS_SWIFT_NAME(__layoutRegionForBar(onDirectionalEdge:));
+
+ (instancetype)new NS_UNAVAILABLE;
- (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIWritingToolsCoordinator.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIWritingToolsCoordinator.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIWritingToolsCoordinator.h 2026-08-14 00:56:47
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIWritingToolsCoordinator.h 2026-10-09 03:01:08
@@ -894,9 +894,15 @@
/// object, include both a ``UIPreviewParameters`` and a ``UIPreviewTarget``
/// object. Create the ``UIPreviewTarget`` object with your text view as the
/// container, and set the center point to the center of your text view.
-/// Create the ``UIPreviewParameters`` object using the selection rectangles
-/// for the text, which you get from your view’s layout manager. Writing Tools
-/// uses this information to place your image directly above the text in your view.
+/// Create the ``UIPreviewParameters`` object using `init(textLineRects:)`,
+/// passing an array containing one rectangle per line of the selected text,
+/// which you get from your view’s layout manager.
+///
+/// - Important: Provide one rectangle per line in `textLineRects`. Writing
+/// Tools uses each rectangle to animate its line independently, layering a
+/// bounce effect on top of the shimmer. If you provide a single rectangle
+/// that spans the entire range instead, Writing Tools can only animate the
+/// text as one unit, which produces a shimmer only, without the bounce.
///
/// For a single animation type, the system calls this method, followed sequentially
/// by the ``writingToolsCoordinator(_:prepareFor:range:context:completion:)`` and