Skip to content

UIKit iOS xcode16.0 b4

Rolf Bjarne Kvinge edited this page Aug 28, 2024 · 3 revisions

#UIKit.framework https://github.com/xamarin/xamarin-macios/pull/21130

diff -ruN /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGeometry.h /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGeometry.h
--- /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGeometry.h	2024-06-30 15:24:42
+++ /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIGeometry.h	2024-07-13 14:23:29
@@ -64,7 +64,7 @@
     UIAxisHorizontal = 1 << 0,
     UIAxisVertical   = 1 << 1,
     UIAxisBoth       = (UIAxisHorizontal | UIAxisVertical),
-} API_AVAILABLE(ios(13.4), tvos(13.4)) API_UNAVAILABLE(watchos);
+} API_AVAILABLE(ios(13.4), tvos(13.4), watchos(6.2));
 
 #ifdef FOUNDATION_HAS_DIRECTIONAL_GEOMETRY
 
@@ -198,12 +198,12 @@
 
 @interface NSValue (NSValueUIGeometryExtensions)
 
-+ (NSValue *)valueWithCGPoint:(CGPoint)point API_UNAVAILABLE(watchos);
-+ (NSValue *)valueWithCGVector:(CGVector)vector API_UNAVAILABLE(watchos);
-+ (NSValue *)valueWithCGSize:(CGSize)size API_UNAVAILABLE(watchos);
-+ (NSValue *)valueWithCGRect:(CGRect)rect API_UNAVAILABLE(watchos);
-+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform API_UNAVAILABLE(watchos);
-+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets API_UNAVAILABLE(watchos);
++ (NSValue *)valueWithCGPoint:(CGPoint)point API_AVAILABLE(watchos(2.0));
++ (NSValue *)valueWithCGVector:(CGVector)vector API_AVAILABLE(watchos(2.0));
++ (NSValue *)valueWithCGSize:(CGSize)size API_AVAILABLE(watchos(2.0));
++ (NSValue *)valueWithCGRect:(CGRect)rect API_AVAILABLE(watchos(2.0));
++ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform API_AVAILABLE(watchos(2.0));
++ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets API_AVAILABLE(watchos(2.0));
 #ifndef FOUNDATION_HAS_DIRECTIONAL_GEOMETRY
 #if UIKIT_HAS_UIFOUNDATION_SYMBOLS
 + (NSValue *)valueWithDirectionalEdgeInsets:(NSDirectionalEdgeInsets)insets API_AVAILABLE(ios(11.0),tvos(11.0),watchos(4.0));
@@ -211,12 +211,12 @@
 #endif // FOUNDATION_HAS_DIRECTIONAL_GEOMETRY
 + (NSValue *)valueWithUIOffset:(UIOffset)insets API_AVAILABLE(ios(5.0), watchos(2.0));
 
-@property(nonatomic, readonly) CGPoint CGPointValue API_UNAVAILABLE(watchos);
-@property(nonatomic, readonly) CGVector CGVectorValue API_UNAVAILABLE(watchos);
-@property(nonatomic, readonly) CGSize CGSizeValue API_UNAVAILABLE(watchos);
-@property(nonatomic, readonly) CGRect CGRectValue API_UNAVAILABLE(watchos);
-@property(nonatomic, readonly) CGAffineTransform CGAffineTransformValue API_UNAVAILABLE(watchos);
-@property(nonatomic, readonly) UIEdgeInsets UIEdgeInsetsValue API_UNAVAILABLE(watchos);
+@property(nonatomic, readonly) CGPoint CGPointValue API_AVAILABLE(watchos(2.0));
+@property(nonatomic, readonly) CGVector CGVectorValue API_AVAILABLE(watchos(2.0));
+@property(nonatomic, readonly) CGSize CGSizeValue API_AVAILABLE(watchos(2.0));
+@property(nonatomic, readonly) CGRect CGRectValue API_AVAILABLE(watchos(2.0));
+@property(nonatomic, readonly) CGAffineTransform CGAffineTransformValue API_AVAILABLE(watchos(2.0));
+@property(nonatomic, readonly) UIEdgeInsets UIEdgeInsetsValue API_AVAILABLE(watchos(2.0));
 #ifndef FOUNDATION_HAS_DIRECTIONAL_GEOMETRY
 #if UIKIT_HAS_UIFOUNDATION_SYMBOLS
 @property(nonatomic, readonly) NSDirectionalEdgeInsets directionalEdgeInsetsValue API_AVAILABLE(ios(11.0),tvos(11.0),watchos(4.0));
@@ -228,12 +228,12 @@
     
 @interface NSCoder (UIGeometryKeyedCoding)
 
-- (void)encodeCGPoint:(CGPoint)point forKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (void)encodeCGVector:(CGVector)vector forKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (void)encodeCGSize:(CGSize)size forKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (void)encodeCGRect:(CGRect)rect forKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (void)encodeCGAffineTransform:(CGAffineTransform)transform forKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (void)encodeUIEdgeInsets:(UIEdgeInsets)insets forKey:(NSString *)key API_UNAVAILABLE(watchos);
+- (void)encodeCGPoint:(CGPoint)point forKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (void)encodeCGVector:(CGVector)vector forKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (void)encodeCGSize:(CGSize)size forKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (void)encodeCGRect:(CGRect)rect forKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (void)encodeCGAffineTransform:(CGAffineTransform)transform forKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (void)encodeUIEdgeInsets:(UIEdgeInsets)insets forKey:(NSString *)key API_AVAILABLE(watchos(2.0));
 #ifndef FOUNDATION_HAS_DIRECTIONAL_GEOMETRY
 #if UIKIT_HAS_UIFOUNDATION_SYMBOLS
 - (void)encodeDirectionalEdgeInsets:(NSDirectionalEdgeInsets)insets forKey:(NSString *)key API_AVAILABLE(ios(11.0),tvos(11.0),watchos(4.0));
@@ -241,12 +241,12 @@
 #endif // FOUNDATION_HAS_DIRECTIONAL_GEOMETRY
 - (void)encodeUIOffset:(UIOffset)offset forKey:(NSString *)key API_AVAILABLE(ios(5.0), watchos(2.0));
 
-- (CGPoint)decodeCGPointForKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (CGVector)decodeCGVectorForKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (CGSize)decodeCGSizeForKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (CGRect)decodeCGRectForKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (CGAffineTransform)decodeCGAffineTransformForKey:(NSString *)key API_UNAVAILABLE(watchos);
-- (UIEdgeInsets)decodeUIEdgeInsetsForKey:(NSString *)key API_UNAVAILABLE(watchos);
+- (CGPoint)decodeCGPointForKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (CGVector)decodeCGVectorForKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (CGSize)decodeCGSizeForKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (CGRect)decodeCGRectForKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (CGAffineTransform)decodeCGAffineTransformForKey:(NSString *)key API_AVAILABLE(watchos(2.0));
+- (UIEdgeInsets)decodeUIEdgeInsetsForKey:(NSString *)key API_AVAILABLE(watchos(2.0));
 #ifndef FOUNDATION_HAS_DIRECTIONAL_GEOMETRY
 #if UIKIT_HAS_UIFOUNDATION_SYMBOLS
 - (NSDirectionalEdgeInsets)decodeDirectionalEdgeInsetsForKey:(NSString *)key API_AVAILABLE(ios(11.0),tvos(11.0),watchos(4.0));
diff -ruN /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITabBarControllerSidebar.h /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITabBarControllerSidebar.h
--- /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITabBarControllerSidebar.h	2024-06-30 15:24:45
+++ /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITabBarControllerSidebar.h	2024-07-16 00:59:57
@@ -97,6 +97,17 @@
 
 @end
 
+#pragma mark - UITabBarControllerSidebarAnimating
+
+API_AVAILABLE(ios(18.0), visionos(2.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos)  NS_SWIFT_UI_ACTOR
+NS_SWIFT_NAME(UITabBarControllerSidebar.Animating)
+@protocol UITabBarControllerSidebarAnimating <NSObject>
+
+- (void)addAnimations:(void (^)(void))animations;
+- (void)addCompletion:(void (^)(void))completion NS_SWIFT_DISABLE_ASYNC;
+
+@end
+
 #pragma mark - UITabBarControllerSidebarDelegate
 
 @class UITabSidebarItem, UITabSidebarItemRequest;
@@ -107,8 +118,10 @@
 
 @optional
 
-/// Notifies the delegate when the visibility of the sidebar has been changed by the user.
-- (void)tabBarController:(UITabBarController *)tabBarController sidebarVisibilityDidChange:(UITabBarControllerSidebar *)sidebar;
+/// Notifies the delegate when the visibility of the sidebar is about to change when `sidebar.isHidden` changes.
+/// Add animations to the animator to run alongside the visibility update. Alongside animations and completions will run immediately
+/// if the sidebar visibility is changed without animation.
+- (void)tabBarController:(UITabBarController *)tabBarController sidebarVisibilityWillChange:(UITabBarControllerSidebar *)sidebar animator:(id<UITabBarControllerSidebarAnimating>)animator;
 
 #pragma mark Configuration
 
diff -ruN /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h
--- /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h	2024-06-30 15:14:33
+++ /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInput.h	2024-07-12 13:06:55
@@ -260,7 +260,12 @@
 @property (nonatomic, readonly, getter=isEditable) BOOL editable API_AVAILABLE(ios(18.0), macos(15.0), visionos(2.0)) API_UNAVAILABLE(tvos, watchos);
 
 - (void)insertAttributedText:(NSAttributedString *)string API_AVAILABLE(ios(12.0), tvos(12.0), watchos(5.0), macos(10.14), visionos(1.0)) API_UNAVAILABLE(watchos);
+- (NSAttributedString *)attributedTextInRange:(UITextRange *)range API_AVAILABLE(ios(12.0), tvos(12.0), macos(10.14), visionos(1.0)) API_UNAVAILABLE(watchos);
 - (void)replaceRange:(UITextRange *)range withAttributedText:(NSAttributedString *)attributedText API_AVAILABLE(ios(13.0), tvos(13.0), macos(10.15), visionos(1.0)) API_UNAVAILABLE(watchos);
+
+// These methods are called when the Writing Tools panel is presented and dismissed
+- (void)willPresentWritingTools API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(tvos, watchos, visionos);
+- (void)didDismissWritingTools API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(tvos, watchos, visionos);
 @end
 
 //---------------------------------------------------------------------------------------------------
diff -ruN /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h
--- /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h	2024-06-30 14:20:51
+++ /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextInputTraits.h	2024-07-12 04:49:07
@@ -208,6 +208,28 @@
     
     /// implies `RichText`,  and Writing Tools may provide attributes for tabular layout
     UIWritingToolsAllowedInputOptionsTable = 1 << 3,
+} API_DEPRECATED("Use UIWritingToolsResultOptions instead", ios(18.0, API_TO_BE_DEPRECATED), macos(15.0, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);;
+
+//
+// UIWritingToolsResultOptions
+//
+// Controls the configuration of the available Writing Tools UI
+//
+typedef NS_OPTIONS(NSUInteger, UIWritingToolsResultOptions) {
+    /// System-defined behavior
+    UIWritingToolsResultDefault = 0,
+    
+    /// Writing Tools will provide plain text in proofreading suggestions or rewrites
+    UIWritingToolsResultPlainText = 1 << 0,
+    
+    /// As well as plain text, Writing Tools will provide text attributes in proofreading suggestions or rewrites that are natively supported or known to be easily adopted (such as lists)
+    UIWritingToolsResultRichText = 1 << 1,
+    
+    /// implies `RichText`,  and Writing Tools may provide attributes for list layout
+    UIWritingToolsResultList = 1 << 2, 
+    
+    /// implies `RichText`,  and Writing Tools may provide attributes for tabular layout
+    UIWritingToolsResultTable = 1 << 3,
 } API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
 
 typedef NSString * UITextContentType NS_TYPED_ENUM API_UNAVAILABLE(watchos);
@@ -263,7 +285,8 @@
 @property(nullable,nonatomic,copy) UITextInputPasswordRules *passwordRules API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(watchos); // default is nil
 
 @property UIWritingToolsBehavior writingToolsBehavior API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(tvos, watchos, visionos);
-@property UIWritingToolsAllowedInputOptions writingToolsAllowedInputOptions API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
+@property UIWritingToolsAllowedInputOptions writingToolsAllowedInputOptions API_DEPRECATED_WITH_REPLACEMENT("allowedWritingToolsResultOptions", ios(18.0, API_TO_BE_DEPRECATED), macos(15.0, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
+@property UIWritingToolsResultOptions allowedWritingToolsResultOptions API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
 
 @end
 
diff -ruN /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h
--- /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h	2024-07-03 01:26:22
+++ /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UITextView.h	2024-07-13 14:23:37
@@ -268,7 +268,10 @@
 
 // Also see UITextInputTraits.h
 @property UIWritingToolsBehavior writingToolsBehavior API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(tvos, watchos, visionos);
-@property UIWritingToolsAllowedInputOptions writingToolsAllowedInputOptions API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
+@property UIWritingToolsAllowedInputOptions writingToolsAllowedInputOptions API_DEPRECATED_WITH_REPLACEMENT("allowedWritingToolsResultOptions", ios(18.0, API_TO_BE_DEPRECATED), macos(15.0, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
+
+// WARNING: UITextView does not support UIWritingToolsResultOptionsTable and will throw an exception for this value
+@property UIWritingToolsResultOptions allowedWritingToolsResultOptions API_AVAILABLE(ios(18.0), macos(15.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(tvos, watchos);
 
 /// For text views that have flag `allowsEditingTextAttributes` set,
 /// this configuration will be used for `UITextFormattingViewController`
diff -ruN /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h
--- /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h	2024-06-30 15:14:42
+++ /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIViewController.h	2024-07-16 01:18:21
@@ -271,7 +271,7 @@
 /// The provided transition may be ignored if not supported by the
 /// current context. For example, `UINavigationController` supports
 /// the .zoom transition, but not the .coverVertical transition.
-@property (nonatomic, strong) UIViewControllerTransition *preferredTransition API_AVAILABLE(ios(18.0));
+@property (nonatomic, strong, nullable) UIViewControllerTransition *preferredTransition API_AVAILABLE(ios(18.0));
 
 /*
  Defines the presentation style that will be used for this view controller when it is presented modally. Set this property on the view controller to be presented, not the presenter.
Clone this wiki locally