Skip to content

PhotosUI iOS xcode14.0 beta1

Manuel de la Pena edited this page Aug 5, 2022 · 3 revisions

#PhotosUI.framework https://github.com/xamarin/xamarin-macios/pull/15608

diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHContentEditingController.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHContentEditingController.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHContentEditingController.h	2022-02-23 07:58:16.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHContentEditingController.h	2022-05-31 14:51:14.000000000 -0400
@@ -7,7 +7,11 @@
 
 #import <Foundation/Foundation.h>
 
+#if TARGET_OS_IPHONE
 #import <UIKit/UIImage.h>
+#elif TARGET_OS_OSX
+@class NSImage;
+#endif
 
 NS_ASSUME_NONNULL_BEGIN
 API_AVAILABLE_BEGIN(macos(10.11), ios(8), macCatalyst(14))
@@ -22,7 +26,11 @@
 - (BOOL)canHandleAdjustmentData:(PHAdjustmentData *)adjustmentData;
 
 // Provides the input for the editing session. The placeholder image represents the current version of the asset (with adjustments baked in), and can be used as UI placeholder, in case rendering the adjustments from the input cannot be done in a timely fashion.
+#if TARGET_OS_IPHONE
 - (void)startContentEditingWithInput:(PHContentEditingInput *)contentEditingInput placeholderImage:(UIImage *)placeholderImage;
+#elif TARGET_OS_OSX
+- (void)startContentEditingWithInput:(PHContentEditingInput *)contentEditingInput placeholderImage:(NSImage *)placeholderImage;
+#endif
 
 // Called when the user finishes the editing session. The receiver should prevent the user from editing the asset further. Also, it should create the editing output and call the completion handler. The completion handler returns after the output has been consumed, so it is safe to perform clean up after it returns. The completion handler can (and should best) be called on a background queue.
 - (void)finishContentEditingWithCompletionHandler:(void (^)(PHContentEditingOutput * _Nullable))completionHandler;
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHEditingExtensionContext.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHEditingExtensionContext.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHEditingExtensionContext.h	2022-02-23 07:58:16.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHEditingExtensionContext.h	1969-12-31 19:00:00.000000000 -0500
@@ -1,15 +0,0 @@
-//
-//  PHEditingExtensionContext.h
-//  PhotosUI
-//
-//  Copyright (c) 2014 Apple Inc. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-
-OS_EXPORT API_DEPRECATED("No longer supported. This class will be removed in an upcoming release.", ios(8, 13)) API_UNAVAILABLE(macCatalyst)
-
-@interface PHEditingExtensionContext : NSExtensionContext
-
-@end
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHLivePhotoView.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHLivePhotoView.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHLivePhotoView.h	2022-02-23 07:58:16.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHLivePhotoView.h	2022-05-31 14:51:14.000000000 -0400
@@ -7,18 +7,29 @@
 
 #import <TargetConditionals.h>
 
+#if TARGET_OS_IPHONE
 #import <Photos/Photos.h>
 #import <UIKit/UIKit.h>
+#elif TARGET_OS_OSX
+#import <AppKit/AppKit.h>
+#import <Photos/PHLivePhoto.h>
+#endif
 
 NS_ASSUME_NONNULL_BEGIN
+#if TARGET_OS_IPHONE
 API_AVAILABLE_BEGIN(ios(9.1), tvos(10))
+#elif TARGET_OS_OSX
+API_AVAILABLE_BEGIN(macos(10.12))
+#endif
 
 @protocol PHLivePhotoViewDelegate;
 
+#if TARGET_OS_IPHONE
 typedef NS_OPTIONS(NSUInteger, PHLivePhotoBadgeOptions) {
     PHLivePhotoBadgeOptionsOverContent  = 1 << 0,               ///< Include treatments so this image can be shown directly over the content of the Live Photo
     PHLivePhotoBadgeOptionsLiveOff      = 1 << 1,               ///< To indicate that the Live Photo aspect is turned off and it will be treated as a still (e.g. for sharing)
 };
+#endif
 
 typedef NS_ENUM(NSInteger, PHLivePhotoViewPlaybackStyle) {
     PHLivePhotoViewPlaybackStyleUndefined = 0,
@@ -26,29 +37,57 @@
     PHLivePhotoViewPlaybackStyleHint,
 };
 
+#if TARGET_OS_OSX
+typedef NS_ENUM(NSInteger, PHLivePhotoViewContentMode) {
+    PHLivePhotoViewContentModeAspectFit,
+    PHLivePhotoViewContentModeAspectFill,
+};
+#endif
 
 OS_EXPORT
+#if TARGET_OS_IPHONE
 @interface PHLivePhotoView : UIView
+#elif TARGET_OS_OSX
+@interface PHLivePhotoView : NSView
+#endif
 
+#if TARGET_OS_IPHONE
 /// System badge images representing Live Photo content
 + (UIImage *)livePhotoBadgeImageWithOptions:(PHLivePhotoBadgeOptions)badgeOptions;
+#endif
 
 @property (readwrite, nonatomic, weak, nullable) id<PHLivePhotoViewDelegate> delegate;
 
 /// Live photo displayed in the receiver.
 @property (readwrite, nonatomic, strong, nullable) PHLivePhoto *livePhoto;
 
+#if TARGET_OS_OSX
+/// The mode in which the receiver will display its content. Defaults to PHLivePhotoViewContentModeAspectFit.
+@property (readwrite, nonatomic, assign) PHLivePhotoViewContentMode contentMode;
+
+/// The audio volume during playback
+@property (readwrite, nonatomic, assign) float audioVolume;
+#endif
 
 /// Indicates whether the audio of the Live Photo is muted.
 @property (readwrite, nonatomic, assign, getter=isMuted) BOOL muted;
 
+#if TARGET_OS_IPHONE
 /// Gesture used to trigger playback. By default, added to the receiver. Can be moved to a different view.
 @property (readonly, nonatomic, strong) UIGestureRecognizer *playbackGestureRecognizer;
+#endif
 
 /// The following methods allow the client to manually trigger playback. If the live photo is changed during playback, it will be immediately interrupted.
 - (void)startPlaybackWithStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle;
 - (void)stopPlayback;
 
+#if TARGET_OS_OSX
+/// Stops live photo playback. If animated is NO, the photo is immediately displayed.
+- (void)stopPlaybackAnimated:(BOOL)animated;
+
+/// Directly access the livePhotoBadge in cases where it should be added to a different place in the view hierachy and not the live photo view. This can be useful when the live photo view is added to a scroll view.
+@property (readonly, nonatomic, strong, nullable) NSView *livePhotoBadgeView;
+#endif
 @end
 
 
@@ -62,6 +101,10 @@
 
 - (void)livePhotoView:(PHLivePhotoView *)livePhotoView didEndPlaybackWithStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle;
 
+#if TARGET_OS_IPHONE // {
+// This will be called before gestureRecognizer get touch info (point location), so we need to provide the touch to delegate to decide.
+- (NSTimeInterval)livePhotoView:(PHLivePhotoView *)livePhotoView extraMinimumTouchDurationForTouch:(UITouch *)touch withStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle;
+#endif // }
 @end
 
 API_AVAILABLE_END
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHPicker.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHPicker.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHPicker.h	2022-02-23 10:58:44.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PHPicker.h	2022-05-31 15:03:27.000000000 -0400
@@ -7,50 +7,91 @@
 
 #import <Foundation/Foundation.h>
 
-API_AVAILABLE_BEGIN(ios(14))
-API_UNAVAILABLE_BEGIN(macos, tvos, watchos)
 NS_ASSUME_NONNULL_BEGIN
 
 @class PHPhotoLibrary;
 
-/// A mode that determines which representation an item provider should provide if multiple representations of the same asset are available for the requested type identifier or class.
- NS_REFINED_FOR_SWIFT
- typedef NS_ENUM(NSInteger, PHPickerConfigurationAssetRepresentationMode) {
-     /// Uses the best representation determined by the system. This may change in future releases.
-     PHPickerConfigurationAssetRepresentationModeAutomatic = 0,
-     /// Uses the current representation to avoid transcoding if possible.
-     PHPickerConfigurationAssetRepresentationModeCurrent = 1,
-     /// Uses the most compatible representation if possible.
-     PHPickerConfigurationAssetRepresentationModeCompatible = 2,
- };
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, PHAssetPlaybackStyle);
+
+/// A mode that determines which representation \c PHPickerViewController should provide for an asset given a type identifier, if multiple representations are available.
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, PHPickerConfigurationAssetRepresentationMode) {
+    /// Uses the best representation determined by the system. This may change in future releases.
+    PHPickerConfigurationAssetRepresentationModeAutomatic = 0,
+    /// Uses the current representation to avoid transcoding if possible.
+    PHPickerConfigurationAssetRepresentationModeCurrent = 1,
+    /// Uses the most compatible representation if possible, even if transcoding is required.
+    PHPickerConfigurationAssetRepresentationModeCompatible = 2,
+} API_AVAILABLE(ios(14), macos(13)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(tvos);
 
-/// An enum that determines how the picker handles user selection.
+/// An enum that determines how \c PHPickerViewController handles user selection.
 NS_REFINED_FOR_SWIFT
 typedef NS_ENUM(NSInteger, PHPickerConfigurationSelection) {
     /// Uses the default selection behavior.
     PHPickerConfigurationSelectionDefault = 0,
     /// Uses the selection order made by the user. Selected assets are numbered.
     PHPickerConfigurationSelectionOrdered = 1,
-} API_AVAILABLE(ios(15));
+} API_AVAILABLE(ios(15), macos(13)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(tvos);
 
-/// A filter used to restrict the types \c PHPickerViewController can display.
+NS_ASSUME_NONNULL_END
+
+API_AVAILABLE_BEGIN(ios(14), macos(13))
+API_UNAVAILABLE_BEGIN(tvos, watchos)
+NS_ASSUME_NONNULL_BEGIN
+
+/// A filter that restricts which types of assets \c PHPickerViewController can show.
 __attribute__((objc_subclassing_restricted))
 OS_EXPORT
 NS_REFINED_FOR_SWIFT
+API_UNAVAILABLE(watchos)
 @interface PHPickerFilter : NSObject <NSCopying>
 
 /// The filter for images.
-@property (NS_NONATOMIC_IOSONLY, class, readonly) PHPickerFilter *imagesFilter;
+@property (nonatomic, class, readonly) PHPickerFilter *imagesFilter API_UNAVAILABLE(watchos);
 
 /// The filter for videos.
-@property (NS_NONATOMIC_IOSONLY, class, readonly) PHPickerFilter *videosFilter;
+@property (nonatomic, class, readonly) PHPickerFilter *videosFilter;
 
 /// The filter for live photos.
-@property (NS_NONATOMIC_IOSONLY, class, readonly) PHPickerFilter *livePhotosFilter;
+@property (nonatomic, class, readonly) PHPickerFilter *livePhotosFilter;
+
+/// The filter for Depth Effect photos.
+@property (nonatomic, class, readonly) PHPickerFilter *depthEffectPhotosFilter API_AVAILABLE(ios(16));
+
+/// The filter for bursts.
+@property (nonatomic, class, readonly) PHPickerFilter *burstsFilter API_AVAILABLE(ios(16));
+
+/// The filter for panorama photos.
+@property (nonatomic, class, readonly) PHPickerFilter *panoramasFilter API_AVAILABLE(ios(15));
+
+/// The filter for screenshots.
+@property (nonatomic, class, readonly) PHPickerFilter *screenshotsFilter API_AVAILABLE(ios(15));
+
+/// The filter for screen recordings.
+@property (nonatomic, class, readonly) PHPickerFilter *screenRecordingsFilter API_AVAILABLE(ios(15));
+
+/// The filter for Cinematic videos.
+@property (nonatomic, class, readonly) PHPickerFilter *cinematicVideosFilter API_AVAILABLE(ios(16));
+
+/// The filter for Slow-Mo videos.
+@property (nonatomic, class, readonly) PHPickerFilter *slomoVideosFilter API_AVAILABLE(ios(15));
+
+/// The filter for time-lapse videos.
+@property (nonatomic, class, readonly) PHPickerFilter *timelapseVideosFilter API_AVAILABLE(ios(15));
+
+/// Returns a new filter based on the asset playback style.
++ (PHPickerFilter *)playbackStyleFilter:(PHAssetPlaybackStyle)playbackStyle API_AVAILABLE(ios(15));
 
 /// Returns a new filter formed by OR-ing the filters in a given array.
 + (PHPickerFilter *)anyFilterMatchingSubfilters:(NSArray<PHPickerFilter *> *)subfilters;
 
+/// Returns a new filter formed by AND-ing the filters in a given array.
++ (PHPickerFilter *)allFilterMatchingSubfilters:(NSArray<PHPickerFilter *> *)subfilters API_AVAILABLE(ios(15));
+
+/// Returns a new filter formed by negating the given filter.
++ (PHPickerFilter *)notFilterOfSubfilter:(PHPickerFilter *)subfilter API_AVAILABLE(ios(15));
+
 + (instancetype)new NS_UNAVAILABLE;
 - (instancetype)init NS_UNAVAILABLE;
 
@@ -60,32 +101,33 @@
 __attribute__((objc_subclassing_restricted))
 OS_EXPORT
 NS_REFINED_FOR_SWIFT
+API_UNAVAILABLE(watchos)
 @interface PHPickerConfiguration : NSObject <NSCopying>
 
-/// Preferred representation mode of selected assets. Default is \c PHPickerConfigurationAssetRepresentationModeAutomatic.
+/// The preferred representation mode of selected assets. Default is \c PHPickerConfigurationAssetRepresentationModeAutomatic.
 /// @discussion Setting \c preferredAssetRepresentationMode to \c PHPickerConfigurationAssetRepresentationModeAutomatic means the best representation determined by the system will be used.
-@property (NS_NONATOMIC_IOSONLY) PHPickerConfigurationAssetRepresentationMode preferredAssetRepresentationMode;
+@property (nonatomic) PHPickerConfigurationAssetRepresentationMode preferredAssetRepresentationMode API_UNAVAILABLE(watchos);
 
-/// Selection behavior of the picker. Default is \c PHPickerConfigurationSelectionDefault.
-@property (NS_NONATOMIC_IOSONLY) PHPickerConfigurationSelection selection API_AVAILABLE(ios(15));
+/// The selection behavior of the picker. Default is \c PHPickerConfigurationSelectionDefault.
+@property (nonatomic) PHPickerConfigurationSelection selection API_AVAILABLE(ios(15)) API_UNAVAILABLE(watchos);
 
-/// Maximum number of assets that can be selected. Default is 1.
+/// The maximum number of assets that can be selected. Default is 1.
 /// @discussion Setting \c selectionLimit to 0 means maximum supported by the system.
-@property (NS_NONATOMIC_IOSONLY) NSInteger selectionLimit;
+@property (nonatomic) NSInteger selectionLimit API_UNAVAILABLE(watchos);
 
-/// Applying a filter to restrict the types that can be displayed. Default is \c nil.
-/// @discussion Setting \c filter to \c nil means all asset types can be displayed.
-@property (NS_NONATOMIC_IOSONLY, copy, nullable) PHPickerFilter *filter;
+/// Types of assets that can be shown. Default is \c nil.
+/// @discussion Setting \c filter to \c nil means all asset types can be shown.
+@property (nonatomic, copy, nullable) PHPickerFilter *filter API_UNAVAILABLE(watchos);
 
 /// Local identifiers of assets to be shown as selected when the picker is presented. Default is an empty array.
 /// @discussion \c preselectedAssetIdentifiers should be an empty array if \c selectionLimit is 1 or \c photoLibrary is not specified. Returned item providers for preselected assets are always empty.
-@property (NS_NONATOMIC_IOSONLY, copy) NSArray<NSString *> *preselectedAssetIdentifiers API_AVAILABLE(ios(15));
+@property (nonatomic, copy) NSArray<NSString *> *preselectedAssetIdentifiers API_AVAILABLE(ios(15)) API_UNAVAILABLE(watchos);
 
 /// Initializes a new configuration with the \c photoLibrary the picker should use.
-- (instancetype)initWithPhotoLibrary:(PHPhotoLibrary *)photoLibrary;
+- (instancetype)initWithPhotoLibrary:(PHPhotoLibrary *)photoLibrary API_UNAVAILABLE(watchos);
 
 /// Initializes a new configuration with the system photo library. This configuration never returns asset identifiers.
-- (instancetype)init;
+- (instancetype)init API_UNAVAILABLE(watchos);
 
 @end
 
@@ -93,13 +135,14 @@
 __attribute__((objc_subclassing_restricted))
 OS_EXPORT
 NS_REFINED_FOR_SWIFT
+API_UNAVAILABLE(watchos)
 @interface PHPickerResult : NSObject
 
 /// Representations of the selected asset.
-@property (NS_NONATOMIC_IOSONLY, readonly) NSItemProvider *itemProvider;
+@property (nonatomic, readonly) NSItemProvider *itemProvider API_UNAVAILABLE(watchos);
 
-/// Local identifier of the selected asset.
-@property (NS_NONATOMIC_IOSONLY, readonly, nullable) NSString *assetIdentifier;
+/// The local identifier of the selected asset.
+@property (nonatomic, readonly, nullable) NSString *assetIdentifier API_UNAVAILABLE(watchos);
 
 + (instancetype)new NS_UNAVAILABLE;
 - (instancetype)init NS_UNAVAILABLE;
@@ -107,50 +150,77 @@
 @end
 
 NS_ASSUME_NONNULL_END
-API_UNAVAILABLE_END // (macos, tvos, watchos)
-API_AVAILABLE_END // (ios(14))
+API_UNAVAILABLE_END // (tvos, watchos)
+API_AVAILABLE_END // (ios(14), macos(13))
+
+#if __has_include(<AppKit/NSViewController.h>) || __has_include(<UIKit/UIViewController.h>)
 
+#if TARGET_OS_IPHONE
 #import <UIKit/UIKit.h>
+#else
+#import <AppKit/AppKit.h>
+#endif // TARGET_OS_IPHONE
 
-API_AVAILABLE_BEGIN(ios(14))
-API_UNAVAILABLE_BEGIN(macos, tvos, watchos)
+API_AVAILABLE_BEGIN(ios(14), macos(13))
+API_UNAVAILABLE_BEGIN(tvos, watchos)
 NS_ASSUME_NONNULL_BEGIN
 
 @class PHPickerViewController;
 
 /// A set of methods that the delegate must implement to respond to \c PHPickerViewController user events.
 OS_EXPORT
+NS_SWIFT_UI_ACTOR
 NS_REFINED_FOR_SWIFT
+API_UNAVAILABLE(watchos)
 @protocol PHPickerViewControllerDelegate <NSObject>
 
 /// Called when the user completes a selection or dismisses \c PHPickerViewController using the cancel button.
 /// @discussion The picker won't be automatically dismissed when this method is called.
-- (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results;
+- (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results API_UNAVAILABLE(watchos);
 
 @end
 
-/// A picker that manages the system interfaces for choosing assets from the user's photos library and delivers the results of those interactions to a delegate.
-/// @discussion \c PHPickerViewController is intended to be used as-is and does not support subclassing. The view hierarchy for the picker is private and must not be modified. A picker can only be presented once and should not be used for multiple sessions.
+/// A picker that manages the system interfaces for choosing assets from the user's photo library and delivers the results of those interactions to a delegate.
+/// @discussion The picker is intended to be used as-is and does not support subclassing. It is out-of-process, so photo library access authorization is not needed. The view hierarchy for the picker is private and must not be modified.
 __attribute__((objc_subclassing_restricted))
 OS_EXPORT
+API_UNAVAILABLE(watchos)
+#if TARGET_OS_IPHONE
 @interface PHPickerViewController : UIViewController
+#else
+@interface PHPickerViewController : NSViewController
+#endif // TARGET_OS_IPHONE
 
 /// The configuration passed in during initialization.
-@property (NS_NONATOMIC_IOSONLY, copy, readonly) PHPickerConfiguration *configuration NS_REFINED_FOR_SWIFT;
+@property (nonatomic, copy, readonly) PHPickerConfiguration *configuration NS_REFINED_FOR_SWIFT API_UNAVAILABLE(watchos);
 
 /// The delegate to be notified.
-@property (NS_NONATOMIC_IOSONLY, weak) id<PHPickerViewControllerDelegate> delegate NS_REFINED_FOR_SWIFT;
+@property (nonatomic, weak) id<PHPickerViewControllerDelegate> delegate NS_REFINED_FOR_SWIFT API_UNAVAILABLE(watchos);
 
 /// Initializes a new picker with the \c configuration the picker should use.
-- (instancetype)initWithConfiguration:(PHPickerConfiguration *)configuration NS_DESIGNATED_INITIALIZER NS_REFINED_FOR_SWIFT;
+- (instancetype)initWithConfiguration:(PHPickerConfiguration *)configuration NS_DESIGNATED_INITIALIZER NS_REFINED_FOR_SWIFT API_UNAVAILABLE(watchos);
+
+/// Deselects selected assets in the picker.
+/// @discussion Does nothing if asset identifiers are invalid or not selected, or \c photoLibrary is not specified in the configuration.
+- (void)deselectAssetsWithIdentifiers:(NSArray<NSString *> *)identifiers API_AVAILABLE(ios(16));
+
+/// Reorders selected assets in the picker. A \c nil \c afterIdentifier means moving to the front.
+/// @discussion Does nothing if asset identifiers are invalid or not selected, or \c photoLibrary is not specified in the configuration.
+- (void)moveAssetWithIdentifier:(NSString *)identifier afterAssetWithIdentifier:(nullable NSString *)afterIdentifier API_AVAILABLE(ios(16));
 
 + (instancetype)new NS_UNAVAILABLE;
 - (instancetype)init NS_UNAVAILABLE;
+#if TARGET_OS_IPHONE
 - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
+#else
+- (instancetype)initWithNibName:(nullable NSNibName)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
+#endif // TARGET_OS_IPHONE
 - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
 
 @end
 
 NS_ASSUME_NONNULL_END
-API_UNAVAILABLE_END // (macos, tvos, watchos)
-API_AVAILABLE_END // (ios(14))
+API_UNAVAILABLE_END // (tvos, watchos)
+API_AVAILABLE_END // (ios(14), macos(13))
+
+#endif // __has_include(<AppKit/NSViewController.h>) || __has_include(<UIKit/UIViewController.h>)
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PhotosUI.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PhotosUI.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PhotosUI.h	2022-02-16 01:03:15.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/PhotosUI.framework/Headers/PhotosUI.h	2022-05-26 02:15:46.000000000 -0400
@@ -10,13 +10,29 @@
 
 #import <TargetConditionals.h>
 
+#if TARGET_OS_IOS || TARGET_OS_OSX || TARGET_OS_TV
 #import <PhotosUI/PHLivePhotoView.h>
+#endif
 
+#if TARGET_OS_IOS || TARGET_OS_OSX || TARGET_OS_WATCH
+#import <PhotosUI/PHPicker.h>
+#endif
+
+#if TARGET_OS_IOS || TARGET_OS_OSX
 #import <PhotosUI/PHContentEditingController.h>
-#import <PhotosUI/PHEditingExtensionContext.h>
+#endif
 
-#import <PhotosUI/PHPicker.h>
+#if TARGET_OS_IOS
 #import <PhotosUI/PHPhotoLibrary+PhotosUISupport.h>
+#endif
 
+#if TARGET_OS_OSX
+#import <PhotosUI/PhotosUITypes.h>
+#import <PhotosUI/PHProjectExtensionContext.h>
+#import <PhotosUI/PHProjectExtensionController.h>
+#import <PhotosUI/PHProjectInfo.h>
+#import <PhotosUI/PHProjectTypeDescription.h>
+#import <PhotosUI/PHProjectTypeDescriptionDataSource.h>
+#endif
 
 #endif // PhotosUI_PhotosUI_h
Clone this wiki locally