-
Notifications
You must be signed in to change notification settings - Fork 546
TouchController iOS xcode26.0 b6
Rolf Bjarne Kvinge edited this page Aug 19, 2025
·
1 revision
#TouchController.framework
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCButton.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCButton.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCButton.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCButton.h 2025-08-04 11:59:55
@@ -6,12 +6,10 @@
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <Metal/Metal.h>
-#import <simd/simd.h>
-#import <TouchController/TCTransform.h>
-#import <TouchController/TCCollider.h>
+#import <TouchController/TCControlLayout.h>
#import <TouchController/TCControl.h>
-#import <TouchController/TCControlVisuals.h>
+#import <TouchController/TCControlContents.h>
@class TCTouchController;
@@ -21,48 +19,21 @@
///
/// This is mirrored by a <doc://com.apple.documentation/documentation/gamecontroller/gccontrollerbuttoninput>
/// on the associated <doc://com.apple.documentation/documentation/gamecontroller/gccontroller>.
-@interface TCButton : NSObject<TCControl, TCTransform>
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCButton : NSObject<TCControl, TCControlLayout>
-/// The touch controller that manages this button.
-@property (nonatomic, strong, readonly) TCTouchController *touchController;
-
-/// The visuals for the button in its normal state.
+/// The contents for the button in its normal state.
///
/// This value can be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *visuals;
+@property (nonatomic, strong, nullable) TCControlContents *contents;
-/// The visuals for the button when it is toggled on.
-///
-/// This value is only used when the button is a toggle, and can be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *toggleVisuals;
-
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
-/// A Boolean value that indicates whether the button is a toggle button.
-@property (nonatomic, assign, getter=isToggle) BOOL toggle;
+/// The collider shape for the button.
+@property (nonatomic, assign, readonly) TCColliderShape colliderShape;
-/// A Boolean value that indicates whether the button is currently toggled on.
-@property (nonatomic, assign, getter=isToggle, readonly) BOOL toggled;
-
-/// The position of the button in points, with the origin at the top left corner of the screen.
-@property (nonatomic, assign, readonly) CGPoint position;
-
-/// The anchor point that the control's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
-
-/// The control's offset from the anchor, which determines its position.
-@property (nonatomic, assign) CGPoint offset;
-
-/// The layer of the button, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
-
-/// The size (width, height) of the button in points.
-@property (nonatomic, assign) CGSize size;
-
-/// The collider for the button.
-@property (nonatomic, strong) id<TCCollider> collider;
-
/// Not available. Create the control via a `TCTouchController`.
- (instancetype)init NS_UNAVAILABLE;
@@ -71,41 +42,38 @@
/// A descriptor for configuring a button.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCButtonDescriptor : NSObject
/// The label you associate with the button.
@property (nonatomic, strong) TCControlLabel *label;
-/// The visuals for the button in its normal state.
+/// The contents for the button in its normal state.
///
/// This value can be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *visuals;
+@property (nonatomic, strong, nullable) TCControlContents *contents;
-/// The visuals for the button when it is toggled on.
-///
-/// This value is only used when the button is a toggle, and can be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *toggleVisuals;
-
-/// Whether the button is a toggle button.
-@property (nonatomic, assign, getter=isToggle) BOOL toggle;
-
/// The anchor point that the button's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
+@property (nonatomic, assign) TCControlLayoutAnchor anchor;
+/// The coordinate system for the control's anchor point.
+@property (nonatomic, assign) TCControlLayoutAnchorCoordinateSystem anchorCoordinateSystem;
+
/// The control's offset from the anchor, which determines its position.
@property (nonatomic, assign) CGPoint offset;
-/// The layer of the button, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
+/// The z-index of the button. A lower z-index is drawn first.
+@property (nonatomic, assign) NSInteger zIndex;
/// The size (width, height) of the button in points.
@property (nonatomic, assign) CGSize size;
-/// The type of collider to use for the button.
-@property (nonatomic, assign) TCColliderType colliderType;
+/// The shape of collider to use for the button.
+@property (nonatomic, assign) TCColliderShape colliderShape;
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// Creates a new button descriptor with default values.
- (instancetype)init;
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCircleCollider.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCircleCollider.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCircleCollider.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCircleCollider.h 1970-01-01 01:00:00
@@ -1,25 +0,0 @@
-//
-// TCCircleCollider.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-
-#import <TouchController/TCCollider.h>
-#import <TouchController/TCTransform.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// A circular collider.
-@interface TCCircleCollider : NSObject<TCCollider>
-
-/// Creates a new circle collider with the specified transform.
-///
-/// - Parameters:
-/// - transform: The transform to use for the collider.
-/// - Returns: A new `TCCircleCollider` instance.
-- (instancetype)initWithTransform:(id<TCTransform>)transform;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCollider.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCollider.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCollider.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCCollider.h 1970-01-01 01:00:00
@@ -1,48 +0,0 @@
-//
-// TCCollider.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Defines the type of collider.
-typedef NS_ENUM(NSInteger, TCColliderType) {
- /// A circular collider.
- TCColliderTypeCircle,
- /// A rectangular collider.
- TCColliderTypeRect,
- /// A collider representing the left side of the touch controller.
- TCColliderTypeLeftSide,
- /// A collider representing the right side of the touch controller.
- TCColliderTypeRightSide,
-};
-
-/// A protocol defining the collider properties for a control.
-@protocol TCCollider <NSObject>
-
-@required
-/// The type of the collider.
-- (TCColliderType)colliderType;
-
-/// Determines whether the collider contains the specified point.
-///
-/// - Parameters:
-/// - point: The point to check.
-/// - Returns: `YES` if the collider contains the point; otherwise, `NO`.
-- (BOOL)containsPoint:(CGPoint)point;
-
-/// A Boolean value that indicates whether the collider is enabled.
-- (BOOL)enabled;
-
-/// Sets whether the collider is enabled.
-///
-/// - Parameters:
-/// - enabled: `YES` to enable the collider, `NO` to disable it.
-- (void)setEnabled:(BOOL)enabled;
-
-@end
-
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCColliderShape.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCColliderShape.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCColliderShape.h 1970-01-01 01:00:00
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCColliderShape.h 2025-08-04 11:59:55
@@ -0,0 +1,22 @@
+//
+// TCColliderShape.h
+// TouchController
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Defines the shape of a control collider.
+typedef NS_ENUM(NSInteger, TCColliderShape) {
+ /// A circular collider.
+ TCColliderShapeCircle,
+ /// A rectangular collider.
+ TCColliderShapeRect,
+ /// A collider representing the left side of the view the touch controller is embedded in. Useful for thumbsticks and delta controls, so the user can easily hit the control without looking closely.
+ TCColliderShapeLeftSide,
+ /// A collider representing the right side of the view the touch controller is embedded in. Useful for thumbsticks and delta controls, so the user can easily hit the control without looking closely.
+ TCColliderShapeRightSide,
+} API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControl.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControl.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControl.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControl.h 2025-08-04 11:59:55
@@ -5,30 +5,31 @@
#import <Foundation/Foundation.h>
-#import <TouchController/TCCollider.h>
-#import <TouchController/TCTransform.h>
+#import <TouchController/TCControlLayout.h>
+#import <TouchController/TCColliderShape.h>
#import <TouchController/TCControlLabel.h>
NS_ASSUME_NONNULL_BEGIN
/// A protocol that defines the base properties and methods for all touch controls.
-@protocol TCControl <NSObject, TCTransform>
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@protocol TCControl <NSObject, TCControlLayout>
@required
/// The label associated with the control.
@property (nonatomic, strong, readonly) TCControlLabel *label;
-/// The collider for the control.
-@property (nonatomic, strong) id<TCCollider> collider;
+/// The collider shape for the control.
+@property (nonatomic, assign, readonly) TCColliderShape colliderShape;
/// Indicates whether the control is currently pressed.
-@property (nonatomic, assign, readonly) BOOL pressed;
+@property (nonatomic, assign, readonly, getter=isPressed) BOOL pressed;
/// A Boolean value that indicates whether the control is enabled.
///
/// If disabled, it won't respond to touches.
-@property (nonatomic, assign) BOOL enabled;
+@property (nonatomic, assign, getter=isEnabled) BOOL enabled;
/// Handles a touch began event at the specified point.
///
@@ -50,15 +51,8 @@
@optional
-/// The factor by which to highlight the control when pressed.
-@property (nonatomic, assign) float highlightFactor;
/// The duration of the highlight animation.
-@property (nonatomic, assign) simd_float1 highlightTime;
-
-/// Updates the layout of the control.
-///
-/// You won't need to call this directly, unless you change the layout.
-- (void)layoutIfNeeded;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
@end
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlContents.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlContents.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlContents.h 1970-01-01 01:00:00
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlContents.h 2025-08-08 04:52:00
@@ -0,0 +1,128 @@
+//
+// TCControlContents.h
+// TouchController
+//
+
+#import <Foundation/Foundation.h>
+#import <Metal/Metal.h>
+
+#import <TouchController/TCTouchController.h>
+#import <TouchController/TCControlLabel.h>
+#import <TouchController/TCControlContents.h>
+
+@class TCControlImage;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Defines the visual shape of a button.
+typedef NS_ENUM(NSInteger, TCControlContentsButtonShape) {
+ /// A circular button shape.
+ TCControlContentsButtonShapeCircle,
+ /// A rectangular button shape.
+ TCControlContentsButtonShapeRect,
+} NS_SWIFT_NAME(TCControlContents.ButtonShape) API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
+
+/// Defines the direction of a direction pad visual.
+typedef NS_ENUM(NSInteger, TCControlContentsDpadDirection) {
+ /// The up direction.
+ TCControlContentsDpadDirectionUp,
+ /// The down direction.
+ TCControlContentsDpadDirectionDown,
+ /// The left direction.
+ TCControlContentsDpadDirectionLeft,
+ /// The right direction.
+ TCControlContentsDpadDirectionRight,
+} NS_SWIFT_NAME(TCControlContents.DpadDirection) API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
+
+/// Defines the visual style of the individual up/down/left/right elements of a direction pad.
+typedef NS_ENUM(NSInteger, TCControlContentsDpadElementStyle) {
+ /// A circular direction pad style.
+ TCControlContentsDpadElementStyleCircle,
+ /// A pentagon direction pad style.
+ TCControlContentsDpadElementStylePentagon,
+} NS_SWIFT_NAME(TCControlContents.DpadElementStyle) API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
+
+/// Represents the visual contents of a touch control.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCControlContents : NSObject
+
+/// Creates a new instance with the specified images.
+///
+/// - Parameters:
+/// - images: An array of `TCControlImage` objects to use for the contents.
+/// - Returns: A new `TCControlContents` instance.
++ (instancetype)contentsWithImages:(NSArray<TCControlImage *> *)images;
+
+/// The button contents for the specified system image name, size, and shape.
+///
+/// - Parameters:
+/// - imageName: The name of the system image to use for the button.
+/// - size: The size of the button in points.
+/// - shape: The shape of the button.
+/// - controller: The touch controller to create control contents for.
+/// - Returns: The `TCControlContents` for the button.
++ (TCControlContents *)buttonContentsForSystemImageNamed:(NSString *)imageName size:(CGSize)size shape:(TCControlContentsButtonShape)shape controller:(TCTouchController *)controller;
+
+/// The switch contents for the specified system image name, size, and shape.
+///
+/// - Parameters:
+/// - imageName: The name of the system image to use for the switch button.
+/// - size: The size of the switch button in points.
+/// - shape: The shape of the switch button.
+/// - controller: The touch controller to create control contents for.
+/// - Returns: The `TCControlContents` for the switch button.
++ (TCControlContents *)switchedOnContentsForSystemImageNamed:(NSString *)imageName size:(CGSize)size shape:(TCControlContentsButtonShape)shape controller:(TCTouchController *)controller;
+
+/// The thumbstick stick contents for the specified size.
+///
+/// - Parameters:
+/// - size: The size of the thumbstick stick in points.
+/// - controller: The touch controller to create control contents for.
+/// - Returns: The `TCControlContents` for the thumbstick stick.
++ (TCControlContents *)thumbstickStickContentsOfSize:(CGSize)size controller:(TCTouchController *)controller NS_SWIFT_NAME(thumbstickStickContents(size:controller:));
+
+/// The thumbstick background contents for the specified size.
+///
+/// - Parameters:
+/// - size: The size of the thumbstick background in points.
+/// - controller: The touch controller to create control contents for.
+/// - Returns: The `TCControlContents` for the thumbstick background.
++ (TCControlContents *)thumbstickBackgroundContentsOfSize:(CGSize)size controller:(TCTouchController *)controller NS_SWIFT_NAME(thumbstickStickBackgroundContents(size:controller:));
+
+/// The throttle indicator contents for the specified size.
+///
+/// - Parameters:
+/// - size: The size of the throttle indicator in points.
+/// - controller: The touch controller to create control contents for.
+/// - Returns: The `TCControlContents` for the throttle indicator.
++ (TCControlContents *)throttleIndicatorContentsOfSize:(CGSize)size controller:(TCTouchController *)controller NS_SWIFT_NAME(throttleIndicatorContents(size:controller:));
+
+/// The throttle background contents for the specified size.
+///
+/// - Parameters:
+/// - size: The size of the throttle background in points.
+/// - controller: The touch controller to create control contents for.
+/// - Returns: The `TCControlContents` for the throttle background.
++ (TCControlContents *)throttleBackgroundContentsOfSize:(CGSize)size controller:(TCTouchController *)controller NS_SWIFT_NAME(throttleBackgroundContents(size:controller:));
+
+/// The direction pad contents for the specified label, size, style, and direction.
+///
+/// - Parameters:
+/// - label: The label for the direction pad.
+/// - size: The size of the direction pad in points.
+/// - style: The style of the direction pad.
+/// - direction: The direction of the direction pad visual.
+/// - controller: The touch controller to create control contents for.
+/// - Returns: The `TCControlContents` for the direction pad.
++ (TCControlContents *)directionPadContentsForLabel:(TCControlLabel *)label size:(CGSize)size style:(TCControlContentsDpadElementStyle)style direction:(TCControlContentsDpadDirection)direction controller:(TCTouchController *)controller NS_SWIFT_NAME(directionPadContents(label:size:style:direction:controller:));
+
+/// Not available. Use `contentsWithImages:` to create a `TCControlContents`.
+- (instancetype)init NS_UNAVAILABLE;
+
+/// The array of objects used to render the control.
+@property (nonatomic, strong, readonly) NSArray<TCControlImage *> *images;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlImage.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlImage.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlImage.h 1970-01-01 01:00:00
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlImage.h 2025-08-04 11:59:55
@@ -0,0 +1,75 @@
+//
+// TCControlImage.h
+// TouchController
+//
+
+#import <Foundation/Foundation.h>
+#import <CoreGraphics/CoreGraphics.h>
+#import <Metal/Metal.h>
+
+@class UIImage;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Represents an image to be rendered using Metal.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCControlImage : NSObject
+
+/// Not available. Use designated initializer.
+- (instancetype)init NS_UNAVAILABLE;
+
+/// Creates a new image with the specified texture and size.
+///
+/// - Parameters:
+/// - texture: The Metal texture to use for the image.
+/// - size: The size of the image in points.
+/// - Returns: A new `TCControlImage` instance.
+- (instancetype)initWithTexture:(id<MTLTexture>)texture size:(CGSize)size;
+
+/// Creates a new image with the specified texture, size, highlight texture, offset, and color tint.
+///
+/// - Parameters:
+/// - texture: The Metal texture to use for the image.
+/// - size: The size of the image in points.
+/// - highlightTexture: The Metal texture to use for the image when highlighted. May be `nil`.
+/// - offset: The offset from the center of the parent control in points.
+/// - tintColor: The color tint to apply to the texture. The color ref is retained.
+/// - Returns: A new `TCControlImage` instance.
+- (instancetype)initWithTexture:(id<MTLTexture>)texture size:(CGSize)size highlightTexture:(id<MTLTexture> __nullable)highlightTexture offset:(CGPoint)offset tintColor:(CGColorRef)tintColor NS_DESIGNATED_INITIALIZER;
+
+/// Creates a new image from a CGImage.
+///
+/// - Parameters:
+/// - cgImage: The Core Graphics image to create the texture from.
+/// - size: The size of the image in points.
+/// - device: The Metal device used to create the texture.
+/// - Returns: A new `TCControlImage` instance, or `nil` if texture creation fails.
+- (nullable instancetype)initWithCGImage:(CGImageRef)cgImage size:(CGSize)size device:(id<MTLDevice>)device;
+
+/// Creates a new image from a UIImage.
+///
+/// - Parameters:
+/// - uiImage: The UIKit image to create the texture from.
+/// - size: The size of the image in points.
+/// - device: The Metal device used to create the texture.
+/// - Returns: A new `TCControlImage` instance, or `nil` if the UIImage has no backing CGImage
+/// or if texture creation fails.
+- (nullable instancetype)initWithUIImage:(UIImage *)uiImage size:(CGSize)size device:(id<MTLDevice>)device;
+
+
+/// The Metal texture to use for the image.
+@property (nonatomic, strong) id<MTLTexture> texture;
+/// The Metal texture to use for the image when highlighted. May be `nil`.
+@property (nonatomic, strong, nullable) id<MTLTexture> highlightTexture;
+/// The size of the image in points.
+@property (nonatomic, assign) CGSize size;
+/// The offset from the center of the parent control in points.
+@property (nonatomic, assign) CGPoint offset;
+/// The color tint to apply to the texture. The color ref is retained.
+@property (nonatomic, assign) CGColorRef tintColor;
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLabel.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLabel.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLabel.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLabel.h 2025-08-04 11:59:55
@@ -7,54 +7,65 @@
NS_ASSUME_NONNULL_BEGIN
-/// Defines the type of control label.
-typedef NS_ENUM(NSInteger, TCControlLabelType) {
+/// Defines the role for a control label. This determines the type of control on
+/// the touch controller's associated GCController.
+typedef NS_ENUM(NSInteger, TCControlLabelRole) {
/// A label for a button input controller.
- TCControlLabelTypeButton,
+ TCControlLabelRoleButton,
/// A label for a direction pad controller.
- TCControlLabelTypeDirectionPad,
-};
+ TCControlLabelRoleDirectionPad,
+} NS_SWIFT_NAME(TCControlLabel.Role) API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
/// A label you associate with a touch control and provides a semantic description.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCControlLabel : NSObject
/// Creates a pre-configured label for the "A" button.
-+ (instancetype)buttonA;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonA;
/// Creates a pre-configured label for the "B" button.
-+ (instancetype)buttonB;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonB;
/// Creates a pre-configured label for the "X" button.
-+ (instancetype)buttonX;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonX;
/// Creates a pre-configured label for the "Y" button.
-+ (instancetype)buttonY;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonY;
/// Creates a pre-configured label for the "Menu" button.
-+ (instancetype)buttonMenu;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonMenu;
/// Creates a pre-configured label for the "Options" button.
-+ (instancetype)buttonOptions;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonOptions;
/// Creates a pre-configured label for the left shoulder button.
-+ (instancetype)buttonLeftShoulder;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonLeftShoulder;
/// Creates a pre-configured label for the left trigger button.
-+ (instancetype)buttonLeftTrigger;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonLeftTrigger;
/// Creates a pre-configured label for the right shoulder button.
-+ (instancetype)buttonRightShoulder;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonRightShoulder;
/// Creates a pre-configured label for the right trigger button.
-+ (instancetype)buttonRightTrigger;
+@property (class, nonatomic, strong, readonly) TCControlLabel *buttonRightTrigger;
/// Creates a pre-configured label for the left thumbstick.
-+ (instancetype)leftThumbstick;
+@property (class, nonatomic, strong, readonly) TCControlLabel *leftThumbstick;
/// Creates a pre-configured label for the left thumbstick button.
-+ (instancetype)leftThumbstickButton;
+@property (class, nonatomic, strong, readonly) TCControlLabel *leftThumbstickButton;
/// Creates a pre-configured label for the right thumbstick.
-+ (instancetype)rightThumbstick;
+@property (class, nonatomic, strong, readonly) TCControlLabel *rightThumbstick;
/// Creates a pre-configured label for the right thumbstick button.
-+ (instancetype)rightThumbstickButton;
+@property (class, nonatomic, strong, readonly) TCControlLabel *rightThumbstickButton;
/// Creates a pre-configured label for the direction pad.
-+ (instancetype)directionPad;
+@property (class, nonatomic, strong, readonly) TCControlLabel *directionPad;
- (instancetype)init NS_UNAVAILABLE;
+/// Creates a new instance with the provided name and type.
+///
+/// - Parameters:
+/// - name: The name of the control label. Corresponds to the input name on the game controller's physical input profile.
+/// - role: The role of the control label. Corresponds to the type of the `GCControllerElement`on the `GCController`.
+/// - Returns: A new `TCControlLabel` instance.
+- (instancetype)initWithName:(NSString *)name role:(TCControlLabelRole)role;
+
/// The name of the control label that you use for lookup on a game controller instance.
@property (nonatomic, retain, readonly) NSString *name;
/// The type of the control label.
-@property (nonatomic, assign, readonly) TCControlLabelType type;
+@property (nonatomic, assign, readonly) TCControlLabelRole role;
@end
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLayout.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLayout.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLayout.h 1970-01-01 01:00:00
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlLayout.h 2025-08-04 11:59:55
@@ -0,0 +1,64 @@
+//
+// TCControlLayout.h
+// TouchController
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Defines the anchor point for a control.
+typedef NS_ENUM(NSInteger, TCControlLayoutAnchor) {
+ /// Anchors to the top-left corner, relative to the screen size.
+ TCControlLayoutAnchorTopLeft,
+ /// Anchors to the top-center, relative to the screen size.
+ TCControlLayoutAnchorTopCenter,
+ /// Anchors to the top-right corner, relative to the screen size.
+ TCControlLayoutAnchorTopRight,
+ /// Anchors to the center-left, relative to the screen size.
+ TCControlLayoutAnchorCenterLeft,
+ /// Anchors to the center, relative to the screen size.
+ TCControlLayoutAnchorCenter,
+ /// Anchors to the center-right, relative to the screen size.
+ TCControlLayoutAnchorCenterRight,
+ /// Anchors to the bottom-left corner, relative to the screen size.
+ TCControlLayoutAnchorBottomLeft,
+ /// Anchors to the bottom-center, relative to the screen size.
+ TCControlLayoutAnchorBottomCenter,
+ /// Anchors to the bottom-right corner, relative to the screen size.
+ TCControlLayoutAnchorBottomRight,
+} API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
+
+/// Defines the coodinate system for an anchor point.
+typedef NS_ENUM(NSInteger, TCControlLayoutAnchorCoordinateSystem) {
+ /// Anchors are positioned relative to the device's screen size.
+ /// - On larger devices, the coordinate system is shrunk for easier handling.
+ /// - On smaller devices, this is equivalent to `TCControlLayoutAnchorCoordinateSystemAbsolute`.
+ TCControlLayoutAnchorCoordinateSystemRelative,
+ /// Anchors are positioned according to the absolute edges of the sceren.
+ TCControlLayoutAnchorCoordinateSystemAbsolute,
+} API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
+
+/// A protocol defining the controlLayout properties for a control.
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@protocol TCControlLayout <NSObject>
+
+@required
+
+/// The anchor point of the control.
+@property (nonatomic, assign) TCControlLayoutAnchor anchor;
+/// The coordinate system for the control's anchor point.
+@property (nonatomic, assign) TCControlLayoutAnchorCoordinateSystem anchorCoordinateSystem;
+/// The offset from the anchor point.
+@property (nonatomic, assign) CGPoint offset;
+/// The z-index of the controlLayout, used for z-ordering.
+@property (nonatomic, assign) NSInteger zIndex;
+/// The size of the control in points.
+@property (nonatomic, assign) CGSize size;
+
+/// The calculated position of the control.
+@property (nonatomic, assign, readonly) CGPoint position;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlSystemVisualsProvider.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlSystemVisualsProvider.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlSystemVisualsProvider.h 2025-07-24 07:26:32
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlSystemVisualsProvider.h 1970-01-01 01:00:00
@@ -1,135 +0,0 @@
-//
-// TCControlSystemVisualsProvider.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-#import <Metal/Metal.h>
-
-#import <TouchController/TCTouchController.h>
-#import <TouchController/TCControlLabel.h>
-#import <TouchController/TCControlVisuals.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Defines the visual shape of a button.
-typedef NS_ENUM(NSInteger, TCButtonVisualShape) {
- /// A circular button shape.
- TCButtonVisualShapeCircle,
- /// A rectangular button shape.
- TCButtonVisualShapeRect,
-};
-
-/// Defines the direction of a direction pad visual.
-typedef NS_ENUM(NSInteger, TCDirectionPadVisualDirection) {
- /// The up direction.
- TCDirectionPadVisualDirectionUp,
- /// The down direction.
- TCDirectionPadVisualDirectionDown,
- /// The left direction.
- TCDirectionPadVisualDirectionLeft,
- /// The right direction.
- TCDirectionPadVisualDirectionRight,
-};
-
-/// Defines the visual style of a direction pad.
-typedef NS_ENUM(NSInteger, TCDirectionPadVisualStyle) {
- /// A circular direction pad style.
- TCDirectionPadVisualStyleCircle,
- /// A pentagon direction pad style.
- TCDirectionPadVisualStylePentagon,
-};
-
-/// Provides system-defined visuals for touch controls.
-@interface TCControlSystemVisualsProvider : NSObject
-
-/// Not available. Use `initWithTouchController:` to create a `TCControlSystemVisualsProvider`.
-- (instancetype)init NS_UNAVAILABLE;
-
-/// Creates a new visuals provider with the specified touch controller.
-///
-/// - Parameters:
-/// - touchController: The touch controller to use for creating the visuals.
-/// - Returns: A new `TCControlSystemVisualsProvider` instance.
-- (instancetype)initWithTouchController:(TCTouchController *)touchController;
-
-/// The button visuals for the specified label, size, and shape.
-///
-/// - Parameters:
-/// - label: The label for the button.
-/// - size: The size of the button in points.
-/// - shape: The shape of the button.
-/// - Returns: The `TCControlVisuals` for the button.
-- (TCControlVisuals *)buttonVisualsForLabel:(TCControlLabel *)label ofSize:(CGSize)size ofShape:(TCButtonVisualShape)shape;
-
-/// The button visuals for the specified system image name, size, and shape.
-///
-/// - Parameters:
-/// - imageName: The name of the system image to use for the button.
-/// - size: The size of the button in points.
-/// - shape: The shape of the button.
-/// - Returns: The `TCControlVisuals` for the button.
-- (TCControlVisuals *)buttonVisualsForSystemImageNamed:(NSString *)imageName ofSize:(CGSize)size ofShape:(TCButtonVisualShape)shape;
-
-/// The toggle visuals for the specified label, size, and shape.
-///
-/// - Parameters:
-/// - label: The label for the toggle button.
-/// - size: The size of the toggle button in points.
-/// - shape: The shape of the toggle button.
-/// - Returns: The `TCControlVisuals` for the toggle button.
-- (TCControlVisuals *)toggleVisualsForLabel:(TCControlLabel *)label ofSize:(CGSize)size ofShape:(TCButtonVisualShape)shape;
-
-/// The toggle visuals for the specified system image name, size, and shape.
-///
-/// - Parameters:
-/// - imageName: The name of the system image to use for the toggle button.
-/// - size: The size of the toggle button in points.
-/// - shape: The shape of the toggle button.
-/// - Returns: The `TCControlVisuals` for the toggle button.
-- (TCControlVisuals *)toggleVisualsForSystemImageNamed:(NSString *)imageName ofSize:(CGSize)size ofShape:(TCButtonVisualShape)shape;
-
-/// The thumbstick stick visuals for the specified label and size.
-///
-/// - Parameters:
-/// - label: The label for the thumbstick.
-/// - size: The size of the thumbstick stick in points.
-/// - Returns: The `TCControlVisuals` for the thumbstick stick.
-- (TCControlVisuals *)thumbstickStickVisualsForLabel:(TCControlLabel *)label ofSize:(CGSize)size;
-
-/// The thumbstick background visuals for the specified label and size.
-///
-/// - Parameters:
-/// - label: The label for the thumbstick.
-/// - size: The size of the thumbstick background in points.
-/// - Returns: The `TCControlVisuals` for the thumbstick background.
-- (TCControlVisuals *)thumbstickBackgroundVisualsForLabel:(TCControlLabel *)label ofSize:(CGSize)size;
-
-/// The throttle indicator visuals for the specified size.
-///
-/// - Parameters:
-/// - size: The size of the throttle indicator in points.
-/// - Returns: The `TCControlVisuals` for the throttle indicator.
-- (TCControlVisuals *)throttleIndicatorVisualsOfSize:(CGSize)size;
-
-/// The throttle background visuals for the specified size.
-///
-/// - Parameters:
-/// - size: The size of the throttle background in points.
-/// - Returns: The `TCControlVisuals` for the throttle background.
-- (TCControlVisuals *)throttleBackgroundVisualsOfSize:(CGSize)size;
-
-/// The direction pad visuals for the specified label, size, style, and direction.
-///
-/// - Parameters:
-/// - label: The label for the direction pad.
-/// - size: The size of the direction pad in points.
-/// - style: The style of the direction pad.
-/// - direction: The direction of the direction pad visual.
-/// - Returns: The `TCControlVisuals` for the direction pad.
-- (TCControlVisuals *)directionPadVisualsForLabel:(TCControlLabel *)label ofSize:(CGSize)size ofStyle:(TCDirectionPadVisualStyle)style withDirection:(TCDirectionPadVisualDirection)direction;
-
-@end
-
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlVisuals.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlVisuals.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlVisuals.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCControlVisuals.h 1970-01-01 01:00:00
@@ -1,30 +0,0 @@
-//
-// TCControlVisuals.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-
-@class TCSpriteRenderer;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Represents the visual elements of a touch control.
-@interface TCControlVisuals : NSObject
-
-/// Creates a new instance with the specified sprites.
-///
-/// - Parameters:
-/// - sprites: An array of `TCSpriteRenderer` objects to use for the visuals.
-/// - Returns: A new `TCControlVisuals` instance.
-+ (instancetype)visualsWithSprites:(NSArray<TCSpriteRenderer *> *)sprites;
-
-/// Not available. Use `visualsWithSprites:` to create a `TCControlVisuals`.
-- (instancetype)init NS_UNAVAILABLE;
-
-/// The array of objects used to render the control.
-@property (nonatomic, strong, readwrite) NSArray<TCSpriteRenderer *> *sprites;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCDirectionPad.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCDirectionPad.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCDirectionPad.h 2025-07-24 07:29:50
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCDirectionPad.h 2025-08-08 04:55:42
@@ -6,12 +6,10 @@
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <Metal/Metal.h>
-#import <simd/simd.h>
-#import <TouchController/TCTransform.h>
-#import <TouchController/TCCollider.h>
+#import <TouchController/TCControlLayout.h>
#import <TouchController/TCControl.h>
-#import <TouchController/TCControlVisuals.h>
+#import <TouchController/TCControlContents.h>
@class TCTouchController;
@@ -22,11 +20,10 @@
/// You can configure this object to behave as either a composite direction pad (mirrored by a
/// `GCControllerDirectionPad` on the associated `GCController` instance) or as four separate
/// buttons.
-@interface TCDirectionPad : NSObject<TCControl, TCTransform>
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCDirectionPad : NSObject<TCControl, TCControlLayout>
-/// The touch controller that manages this direction pad.
-@property (nonatomic, strong, readonly) TCTouchController *touchController;
-
/// A composite control label.
///
/// If set, the control will behave as a `GCControllerDirectionPad`; otherwise, it behaves as separate buttons.
@@ -40,47 +37,33 @@
/// The label for the right button, if the control isn't a composite direction pad.
@property (nonatomic, strong, nullable) TCControlLabel *rightLabel;
-/// The visuals for the up button.
+/// The contents for the up button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *upVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *upContents;
-/// The visuals for the down button.
+/// The contents for the down button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *downVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *downContents;
-/// The visuals for the left button.
+/// The contents for the left button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *leftVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *leftContents;
-/// The visuals for the right button.
+/// The contents for the right button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *rightVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *rightContents;
-/// The position of the direction pad in points, with the origin at the top left corner of the screen.
-@property (nonatomic, assign, readonly) CGPoint position;
+/// The collider shape for the direction pad.
+@property (nonatomic, assign, readonly) TCColliderShape colliderShape;
-/// The anchor point that the direction pad's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
-
-/// The control's offset from the anchor, which determines its position.
-@property (nonatomic, assign) CGPoint offset;
-
-/// The layer of the direction pad, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
-
-/// The size (width, height) of the direction pad in points.
-@property (nonatomic, assign) CGSize size;
-
-/// The collider for the direction pad.
-@property (nonatomic, strong) id<TCCollider> collider;
-
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
+
/// A Boolean value that indicates whether the control behaves as a swipeable radial button.
///
/// If `YES`, the control behaves as a swipable radial button, rather than a collection of 4 separate buttons.
@@ -94,7 +77,7 @@
/// A Boolean value that indicates whether the control has mutally exclusive input.
///
/// If `YES`, only one element of the direction pad can be pressed at a time.
-@property (nonatomic, assign, getter=hasMutuallyExclusiveInput) BOOL mutuallyExclusiveInput;
+@property (nonatomic, assign, getter=inputIsMutuallyExclusive) BOOL mutuallyExclusiveInput;
/// Not available. Create the control via a `TCTouchController`.
- (instancetype)init NS_UNAVAILABLE;
@@ -104,6 +87,8 @@
/// A descriptor for configuring a directional pad.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCDirectionPadDescriptor : NSObject
/// A composite control label.
@@ -119,37 +104,40 @@
/// The label for the right button, if the control is not a composite direction pad.
@property (nonatomic, strong, nullable) TCControlLabel *rightLabel;
-/// The visuals for the up button.
+/// The contents for the up button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *upVisuals;
-/// The visuals for the down button.
+@property (nonatomic, strong, nullable) TCControlContents *upContents;
+/// The contents for the down button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *downVisuals;
-/// The visuals for the left button.
+@property (nonatomic, strong, nullable) TCControlContents *downContents;
+/// The contents for the left button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *leftVisuals;
-/// The visuals for the right button.
+@property (nonatomic, strong, nullable) TCControlContents *leftContents;
+/// The contents for the right button.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *rightVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *rightContents;
/// The anchor point that the direction pad's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
+@property (nonatomic, assign) TCControlLayoutAnchor anchor;
+
+/// The coordinate system for the control's anchor point.
+@property (nonatomic, assign) TCControlLayoutAnchorCoordinateSystem anchorCoordinateSystem;
/// The control's offset from the anchor, which determines its position.
@property (nonatomic, assign) CGPoint offset;
-/// The layer of the direction pad, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
+/// The z-index of the direction pad. A lower z-index is drawn first.
+@property (nonatomic, assign) NSInteger zIndex;
/// The size (width, height) of the direction pad in points.
@property (nonatomic, assign) CGSize size;
-/// The type of collider to use for the direction pad.
-@property (nonatomic, assign) TCColliderType colliderType;
+/// The shape of collider to use for the direction pad.
+@property (nonatomic, assign) TCColliderShape colliderShape;
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// A Boolean value that indicates whether the control behaves as a swipeable radial button.
///
@@ -164,7 +152,7 @@
/// A Boolean value that indicates whether the control has mutally exclusive input.
///
/// If `YES`, only one element of the direction pad can be pressed at a time.
-@property (nonatomic, assign, getter=hasMutuallyExclusiveInput) BOOL mutuallyExclusiveInput;
+@property (nonatomic, assign, getter=inputIsMutuallyExclusive) BOOL mutuallyExclusiveInput;
/// Creates a new instance with default values.
- (instancetype)init;
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRectCollider.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRectCollider.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRectCollider.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRectCollider.h 1970-01-01 01:00:00
@@ -1,25 +0,0 @@
-//
-// TCRectCollider.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-
-#import <TouchController/TCCollider.h>
-#import <TouchController/TCTransform.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// A rectangular collider.
-@interface TCRectCollider : NSObject<TCCollider>
-
-/// Creates a new rect collider with the specified transform.
-///
-/// - Parameters:
-/// - transform: The transform to use for the collider.
-/// - Returns: A new `TCRectCollider` instance.
-- (instancetype)initWithTransform:(id<TCTransform>)transform;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRegionCollider.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRegionCollider.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRegionCollider.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCRegionCollider.h 1970-01-01 01:00:00
@@ -1,37 +0,0 @@
-//
-// TCRegionCollider.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-
-#import <TouchController/TCCollider.h>
-#import <TouchController/TCTransform.h>
-
-@class TCTouchController;
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Defines the region of the touch controller that the `TCRegionCollider` represents.
-typedef NS_ENUM(NSInteger, TCRegionColliderRegion) {
- /// The left side of the touch controller.
- TCRegionColliderRegionLeftSide,
- /// The right side of the touch controller.
- TCRegionColliderRegionRightSide,
-};
-
-/// A collider that covers a specific region of the touch controller.
-@interface TCRegionCollider : NSObject<TCCollider>
-
-/// Creates a new region collider with the specified region and touch controller.
-///
-/// - Parameters:
-/// - region: The region of the screen to cover.
-/// - touchController: The touch controller to use for determining the screen size.
-/// - Returns: A new `TCRegionCollider` instance.
-- (instancetype)initWithRegion:(TCRegionColliderRegion)region TouchController:(TCTouchController *)touchController;
-
-@end
-
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSpriteRenderer.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSpriteRenderer.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSpriteRenderer.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSpriteRenderer.h 1970-01-01 01:00:00
@@ -1,51 +0,0 @@
-//
-// TCSpriteRenderer.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-#import <CoreGraphics/CoreGraphics.h>
-#import <Metal/Metal.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// A renderer for drawing sprites using Metal.
-@interface TCSpriteRenderer : NSObject
-
-/// Not available. Use designated initializer.
-- (instancetype)init NS_UNAVAILABLE;
-
-/// Creates a new sprite renderer with the specified texture and size.
-///
-/// - Parameters:
-/// - texture: The Metal texture to use for the sprite.
-/// - size: The size of the sprite in points.
-/// - Returns: A new `TCSpriteRenderer` instance.
-- (instancetype)initWithTexture:(id<MTLTexture>)texture size:(CGSize)size;
-
-/// Creates a new sprite renderer with the specified texture, size, highlight texture, offset, and color tint.
-///
-/// - Parameters:
-/// - texture: The Metal texture to use for the sprite.
-/// - size: The size of the sprite in points.
-/// - highlightTexture: The Metal texture to use for the sprite when highlighted. May be `nil`.
-/// - offset: The offset from the center of the parent control in points.
-/// - colorTint: The color tint to apply to the texture. The color ref is retained.
-/// - Returns: A new `TCSpriteRenderer` instance.
-- (instancetype)initWithTexture:(id<MTLTexture>)texture size:(CGSize)size highlightTexture:(id<MTLTexture> __nullable)highlightTexture offset:(CGPoint)offset colorTint:(CGColorRef)colorTint NS_DESIGNATED_INITIALIZER;
-
-/// The Metal texture to use for the sprite.
-@property (nonatomic, strong) id<MTLTexture> texture;
-/// The Metal texture to use for the sprite when highlighted. May be `nil`.
-@property (nonatomic, strong, nullable) id<MTLTexture> highlightTexture;
-/// The size of the sprite in points.
-@property (nonatomic, assign) CGSize size;
-/// The offset from the center of the parent control in points.
-@property (nonatomic, assign) CGPoint offset;
-/// The color tint to apply to the texture. The color ref is retained.
-@property (nonatomic, assign) CGColorRef colorTint;
-
-@end
-
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSwitch.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSwitch.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSwitch.h 1970-01-01 01:00:00
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCSwitch.h 2025-08-04 11:59:55
@@ -0,0 +1,96 @@
+//
+// TCSwitch.h
+// TouchController
+//
+
+#import <Foundation/Foundation.h>
+#import <CoreGraphics/CoreGraphics.h>
+#import <Metal/Metal.h>
+
+#import <TouchController/TCControlLayout.h>
+#import <TouchController/TCControl.h>
+#import <TouchController/TCControlContents.h>
+
+@class TCTouchController;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// A control that represents a single on-screen switch.
+///
+/// This is mirrored by a <doc://com.apple.documentation/documentation/gamecontroller/gccontrollerbuttoninput>
+/// on the associated <doc://com.apple.documentation/documentation/gamecontroller/gccontroller>.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCSwitch : NSObject<TCControl, TCControlLayout>
+
+/// The contents for the switch in its normal state.
+///
+/// This value can be `nil`.
+@property (nonatomic, strong, nullable) TCControlContents *contents;
+
+/// The contents for the switch when it is switched on.
+///
+/// This value can be `nil`.
+@property (nonatomic, strong, nullable) TCControlContents *switchedOnContents;
+
+/// The time it takes for a highlight to fade away, in seconds.
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
+
+/// A Boolean value that indicates whether the switch is currently switched on.
+@property (nonatomic, assign, readonly, getter=isSwitchedOn) BOOL switchedOn;
+
+/// The collider shape for the switch.
+@property (nonatomic, assign, readonly) TCColliderShape colliderShape;
+
+/// Not available. Create the control via a `TCTouchController`.
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+
+
+/// A descriptor for configuring a switch.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCSwitchDescriptor : NSObject
+
+/// The label you associate with the switch.
+@property (nonatomic, strong) TCControlLabel *label;
+
+/// The contents for the switch in its normal state.
+///
+/// This value can be `nil`.
+@property (nonatomic, strong, nullable) TCControlContents *contents;
+
+/// The contents for the switch when it is switched on.
+///
+/// This value can be `nil`.
+@property (nonatomic, strong, nullable) TCControlContents *switchedOnContents;
+
+/// The anchor point that the switch's offset is relative to.
+@property (nonatomic, assign) TCControlLayoutAnchor anchor;
+
+/// The coordinate system for the control's anchor point.
+@property (nonatomic, assign) TCControlLayoutAnchorCoordinateSystem anchorCoordinateSystem;
+
+/// The control's offset from the anchor, which determines its position.
+@property (nonatomic, assign) CGPoint offset;
+
+/// The z-index of the switch. A lower z-index is drawn first.
+@property (nonatomic, assign) NSInteger zIndex;
+
+/// The size (width, height) of the switch in points.
+@property (nonatomic, assign) CGSize size;
+
+/// The shape of collider to use for the switch.
+@property (nonatomic, assign) TCColliderShape colliderShape;
+
+/// The time it takes for a highlight to fade away, in seconds.
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
+
+/// Creates a new switch descriptor with default values.
+- (instancetype)init;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThrottle.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThrottle.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThrottle.h 2025-07-24 07:26:32
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThrottle.h 2025-08-04 11:59:55
@@ -6,12 +6,10 @@
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <Metal/Metal.h>
-#import <simd/simd.h>
-#import <TouchController/TCTransform.h>
-#import <TouchController/TCCollider.h>
+#import <TouchController/TCControlLayout.h>
#import <TouchController/TCControl.h>
-#import <TouchController/TCControlVisuals.h>
+#import <TouchController/TCControlContents.h>
@class TCTouchController;
@@ -23,62 +21,46 @@
TCThrottleOrientationVertical,
/// A horizontal throttle.
TCThrottleOrientationHorizontal,
-};
+} NS_SWIFT_NAME(TCThrottle.Orientation) API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
/// Represents a single on-screen throttle - a one axis input.
///
/// This is mirrored by a `GCControllerButtonInput` on the associated `GCController` instance.
-@interface TCThrottle : NSObject<TCControl, TCTransform>
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCThrottle : NSObject<TCControl, TCControlLayout>
-/// The touch controller that manages this throttle.
-@property (nonatomic, strong, readonly) TCTouchController *touchController;
-
-/// The visuals for the background of the throttle.
+/// The contents for the background of the throttle.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *backgroundVisuals;
-/// The visuals for the indicator of the throttle.
+@property (nonatomic, strong, nullable) TCControlContents *backgroundContents;
+/// The contents for the indicator of the throttle.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *indicatorVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *indicatorContents;
-/// The position of the throttle in points, with the origin at the top left corner of the screen.
-@property (nonatomic, assign, readonly) CGPoint position;
-
-/// The anchor point that the throttle's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
-
-/// The control's offset from the anchor, which determines its position.
-@property (nonatomic, assign) CGPoint offset;
-
-/// The layer of the throttle, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
-
/// The orientation of the throttle.
@property (nonatomic, assign, readonly) TCThrottleOrientation orientation;
/// A Boolean value that indicates whether the control reverts to it's base value.
///
/// If `YES`, the control's value will revert to its base value when no longer pressed.
-@property (nonatomic, assign) BOOL snapToBaseValue;
+@property (nonatomic, assign) BOOL snapsToBaseValue;
/// The initial value of this control.
@property (nonatomic, assign) CGFloat baseValue;
-/// The size (width, height) of the throttle in points.
-@property (nonatomic, assign) CGSize size;
-
/// The size (width, height) of the indicator itself in points.
@property (nonatomic, assign) CGSize indicatorSize;
/// The size (width, height) of the throttle itself, providing boundaries for the indicator, in points.
@property (nonatomic, assign) CGSize throttleSize;
-/// The collider for the throttle.
-@property (nonatomic, strong) id<TCCollider> collider;
+/// The collider shape for the throttle.
+@property (nonatomic, assign, readonly) TCColliderShape colliderShape;
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// Not available. Create the control via a `TCTouchController`.
- (instancetype)init NS_UNAVAILABLE;
@@ -88,19 +70,21 @@
/// A descriptor for configuring a throttle.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCThrottleDescriptor : NSObject
/// The label associated with the throttle.
@property (nonatomic, strong) TCControlLabel *label;
-/// The visuals for the background of the throttle.
+/// The contents for the background of the throttle.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *backgroundVisuals;
-/// The visuals for the indicator of the throttle.
+@property (nonatomic, strong, nullable) TCControlContents *backgroundContents;
+/// The contents for the indicator of the throttle.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *indicatorVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *indicatorContents;
/// The size (width, height) of the throttle in points.
@property (nonatomic, assign) CGSize size;
@@ -114,21 +98,24 @@
/// A Boolean value that indicates whether the control reverts to it's base value.
///
/// If `YES`, the control's value will revert to its base value when no longer pressed.
-@property (nonatomic, assign) BOOL snapToBaseValue;
+@property (nonatomic, assign) BOOL snapsToBaseValue;
/// The initial value of this control.
@property (nonatomic, assign) CGFloat baseValue;
/// The anchor point that the throttle's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
+@property (nonatomic, assign) TCControlLayoutAnchor anchor;
+
+/// The coordinate system for the control's anchor point.
+@property (nonatomic, assign) TCControlLayoutAnchorCoordinateSystem anchorCoordinateSystem;
/// The control's offset from the anchor, which determines its position.
@property (nonatomic, assign) CGPoint offset;
-/// The layer of the throttle, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
+/// The z-index of the throttle. A lower z-index is drawn first.
+@property (nonatomic, assign) NSInteger zIndex;
-/// The type of collider to use for the throttle.
-@property (nonatomic, assign) TCColliderType colliderType;
+/// The shape of collider to use for the throttle.
+@property (nonatomic, assign) TCColliderShape colliderShape;
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// Creates a new throttle descriptor with default values.
- (instancetype)init;
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThumbstick.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThumbstick.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThumbstick.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCThumbstick.h 2025-08-04 11:59:55
@@ -6,12 +6,10 @@
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <Metal/Metal.h>
-#import <simd/simd.h>
-#import <TouchController/TCTransform.h>
-#import <TouchController/TCCollider.h>
+#import <TouchController/TCControlLayout.h>
#import <TouchController/TCControl.h>
-#import <TouchController/TCControlVisuals.h>
+#import <TouchController/TCControlContents.h>
@class TCTouchController;
@@ -20,47 +18,31 @@
/// Represents a single on-screen thumbstick.
///
/// This is mirrored by a `GCControllerDirectionPad` on the associated `GCController` instance.
-@interface TCThumbstick : NSObject<TCControl, TCTransform>
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCThumbstick : NSObject<TCControl, TCControlLayout>
-/// The touch controller that manages this thumbstick.
-@property (nonatomic, strong, readonly) TCTouchController *touchController;
-
-/// The visuals for the background of the thumbstick.
+/// The contents for the background of the thumbstick.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *backgroundVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *backgroundContents;
-/// The visuals for the thumbstick itself.
+/// The contents for the thumbstick itself.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *stickVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *stickContents;
/// A Boolean value that indicates whether to hide the thumbstick when it is not being pressed.
-@property (nonatomic, assign) BOOL hideWhenNotPressed;
+@property (nonatomic, assign) BOOL hidesWhenNotPressed;
-/// The position of the thumbstick in points, with the origin at the top left corner of the screen.
-@property (nonatomic, assign, readonly) CGPoint position;
-
-/// The anchor point that the thumbstick's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
-
-/// The control's offset from the anchor, which determines its position.
-@property (nonatomic, assign) CGPoint offset;
-
-/// The layer of the thumbstick, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
-
-/// The size (width, height) of the thumbstick in points.
-@property (nonatomic, assign) CGSize size;
-
/// The size (width, height) of the thumbstick stick itself in points.
@property (nonatomic, assign) CGSize stickSize;
-/// The collider for the thumbstick.
-@property (nonatomic, strong) id<TCCollider> collider;
+/// The collider shape for the thumbstick.
+@property (nonatomic, assign, readonly) TCColliderShape colliderShape;
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// Not available. Create the control via a `TCTouchController`.
- (instancetype)init NS_UNAVAILABLE;
@@ -70,23 +52,25 @@
/// A descriptor for configuring a thumbstick.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCThumbstickDescriptor : NSObject
/// The label associated with the thumbstick.
@property (nonatomic, strong) TCControlLabel *label;
-/// The visuals for the background of the thumbstick.
+/// The contents for the background of the thumbstick.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *backgroundVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *backgroundContents;
-/// The visuals for the thumbstick itself.
+/// The contents for the thumbstick itself.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *stickVisuals;
+@property (nonatomic, strong, nullable) TCControlContents *stickContents;
/// Whether to hide the thumbstick when it is not being pressed.
-@property (nonatomic, assign) BOOL hideWhenNotPressed;
+@property (nonatomic, assign) BOOL hidesWhenNotPressed;
/// The size (width, height) of the thumbstick stick itself in points.
@property (nonatomic, assign) CGSize stickSize;
@@ -94,17 +78,20 @@
@property (nonatomic, assign) CGSize size;
/// The anchor point that the thumbstick's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
+@property (nonatomic, assign) TCControlLayoutAnchor anchor;
+
+/// The coordinate system for the control's anchor point.
+@property (nonatomic, assign) TCControlLayoutAnchorCoordinateSystem anchorCoordinateSystem;
/// The control's offset from the anchor, which determines its position.
@property (nonatomic, assign) CGPoint offset;
-/// The layer of the thumbstick, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
+/// The z-index of the thumbstick. A lower z-index is drawn first.
+@property (nonatomic, assign) NSInteger zIndex;
-/// The type of collider to use for the thumbstick.
-@property (nonatomic, assign) TCColliderType colliderType;
+/// The shape of collider to use for the thumbstick.
+@property (nonatomic, assign) TCColliderShape colliderShape;
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// Creates a new thumbstick descriptor with default values.
- (instancetype)init;
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchController.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchController.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchController.h 2025-07-24 07:26:32
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchController.h 2025-08-04 12:25:40
@@ -5,7 +5,6 @@
#import <Foundation/Foundation.h>
-#import <simd/simd.h>
#import <Metal/Metal.h>
#import <GameController/GameController.h>
@@ -14,6 +13,9 @@
@class TCButton;
@class TCButtonDescriptor;
+@class TCSwitch;
+@class TCSwitchDescriptor;
+
@class TCThumbstick;
@class TCThumbstickDescriptor;
@@ -30,6 +32,8 @@
NS_ASSUME_NONNULL_BEGIN
+__attribute__((visibility ("default"))) extern NSString *const TCGameControllerProductCategoryTouchController API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos);
+
/// An object that allows you to create and customize on-screen touch controls for a game that uses Metal.
///
/// The controller exposes controls through a <doc://com.apple.documentation/documentation/gamecontroller/gccontroller>
@@ -38,8 +42,15 @@
///
/// This class manages the lifecycle of touch controls, handles user interaction, renders the controls using Metal,
/// and provides a `GCController` instance that reflects the state of the on-screen controls.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCTouchController : NSObject
+/// Whether touch controllers are supported for the device.
+///
+/// Attempting to create a touch controller on an unsupported device will result in a fatal error.
+@property (class, nonatomic, readonly, getter=isSupported) BOOL supported;
+
/// The Metal device the touch control uses for rendering the touch controls.
@property (nonatomic, readonly) id<MTLDevice> device;
@@ -49,6 +60,9 @@
/// An array containing all the button controls managed by this controller.
@property (nonatomic, readonly) NSArray<TCButton *> *buttons;
+/// An array containing all the switch controls managed by this controller.
+@property (nonatomic, readonly) NSArray<TCSwitch *> *switches;
+
/// An array containing all the thumbstick controls managed by this controller.
@property (nonatomic, readonly) NSArray<TCThumbstick *> *thumbsticks;
@@ -61,17 +75,12 @@
/// An array containing all the touchpad controls managed by this controller.
@property (nonatomic, readonly) NSArray<TCTouchpad *> *touchpads;
-/// The width of the screen in points.
-@property (nonatomic, readonly) CGFloat screenWidth;
+/// The size of the view the touch controller's drawable is embedded in, in points.
+@property (nonatomic, readwrite, assign) CGSize size;
-/// The height of the screen in points.
-@property (nonatomic, readonly) CGFloat screenHeight;
+/// The size of the drawable to which the touch controller's contents be drawn, in native pixels.
+@property (nonatomic, readwrite, assign) CGSize drawableSize;
-/// The scale factor of the screen.
-///
-/// For example, 2.0 or 3.0 for Retina displays.
-@property (nonatomic, readonly) CGFloat scaleFactor;
-
/// Creates a new instance with the provided descriptor.
///
/// - Parameters:
@@ -79,129 +88,62 @@
/// - Returns: A new `TCTouchController` instance.
- (instancetype)initWithDescriptor:(TCTouchControllerDescriptor *)descriptor;
-/// Sets up a default layout for the provided control labels.
+/// Automatically lays out the provided control labels, creating them if needed.
///
-/// This is used to automatically position control labels based on a predefined layout.
-///
/// - Parameters:
/// - labels: An array of `TCControlLabel` objects to be laid out.
-- (void)setupDefaultLayoutForLabels:(NSArray<TCControlLabel *> *)labels;
+- (void)automaticallyLayoutControlsForLabels:(NSArray<TCControlLabel *> *)labels;
// MARK: Layout
-/// Creates a new button control with the provided descriptor.
+/// Creates a new button control with the provided descriptor, and adds it to the touch controller.
///
/// - Parameters:
/// - descriptor: The `TCButtonDescriptor` containing the configuration for the button.
/// - Returns: A new `TCButton` instance.
-- (TCButton *)buttonWithDescriptor:(TCButtonDescriptor *)descriptor;
+- (TCButton *)addButtonWithDescriptor:(TCButtonDescriptor *)descriptor NS_SWIFT_NAME(addButton(descriptor:));
-/// Adds a button to the touch controller.
+/// Creates a new switch control with the provided descriptor, and adds it to the touch controller.
///
/// - Parameters:
-/// - button: The `TCButton` to add.
-- (void)addButton:(TCButton *)button;
+/// - descriptor: The `TCSwitchDescriptor` containing the configuration for the switch.
+/// - Returns: A new `TCSwitch` instance.
+- (TCSwitch *)addSwitchWithDescriptor:(TCSwitchDescriptor *)descriptor NS_SWIFT_NAME(addSwitch(descriptor:));
-/// Removes a button from the touch controller.
+/// Creates a new thumbstick control with the provided descriptor, and adds it to the touch controller.
///
/// - Parameters:
-/// - button: The `TCButton` to remove.
-- (void)removeButton:(TCButton *)button;
-
-/// Removes all buttons from the touch controller.
-- (void)removeAllButtons;
-
-/// Creates a new thumbstick control with the provided descriptor.
-///
-/// - Parameters:
/// - descriptor: The `TCThumbstickDescriptor` containing the configuration for the thumbstick.
/// - Returns: A new `TCThumbstick` instance.
-- (TCThumbstick *)thumbstickWithDescriptor:(TCThumbstickDescriptor *)descriptor;
+- (TCThumbstick *)addThumbstickWithDescriptor:(TCThumbstickDescriptor *)descriptor NS_SWIFT_NAME(addThumbstick(descriptor:));
-/// Adds a thumbstick to the touch controller.
+/// Creates a new direction pad control with the provided descriptor, and adds it to the touch controller.
///
/// - Parameters:
-/// - button: The `TCThumbstick` to add.
-- (void)addThumbstick:(TCThumbstick *)button;
-
-/// Removes a thumbstick from the touch controller.
-///
-/// - Parameters:
-/// - button: The `TCThumbstick` to remove.
-- (void)removeThumbstick:(TCThumbstick *)button;
-
-/// Removes all thumbsticks from the touch controller.
-- (void)removeAllThumbsticks;
-
-/// Creates a new direction pad control with the provided descriptor.
-///
-/// - Parameters:
/// - descriptor: The `TCDirectionPadDescriptor` containing the configuration for the direction pad.
/// - Returns: A new `TCDirectionPad` instance.
-- (TCDirectionPad *)directionPadWithDescriptor:(TCDirectionPadDescriptor *)descriptor;
+- (TCDirectionPad *)addDirectionPadWithDescriptor:(TCDirectionPadDescriptor *)descriptor NS_SWIFT_NAME(addDirectionPad(descriptor:));
-/// Adds a direction pad to the touch controller.
+/// Creates a new throttle control with the provided descriptor, and adds it to the touch controller.
///
/// - Parameters:
-/// - directionPad: The `TCDirectionPad` to add.
-- (void)addDirectionPad:(TCDirectionPad *)directionPad;
-
-/// Removes a direction pad from the touch controller.
-///
-/// - Parameters:
-/// - directionPad: The `TCDirectionPad` to remove.
-- (void)removeDirectionPad:(TCDirectionPad *)directionPad;
-
-/// Removes all direction pads from the touch controller.
-- (void)removeAllDirectionPads;
-
-/// Creates a new throttle control with the provided descriptor.
-///
-/// - Parameters:
/// - descriptor: The `TCThrottleDescriptor` containing the configuration for the throttle.
/// - Returns: A new `TCThrottle` instance.
-- (TCThrottle *)throttleWithDescriptor:(TCThrottleDescriptor *)descriptor;
+- (TCThrottle *)addThrottleWithDescriptor:(TCThrottleDescriptor *)descriptor NS_SWIFT_NAME(addThrottle(descriptor:));
-/// Adds a throttle to the touch controller.
+/// Creates a new touchpad control with the provided descriptor, and adds it to the touch controller.
///
/// - Parameters:
-/// - throttle: The `TCThrottle` to add.
-- (void)addThrottle:(TCThrottle *)throttle;
-
-/// Removes a throttle from the touch controller.
-///
-/// - Parameters:
-/// - throttle: The `TCThrottle` to remove.
-- (void)removeThrottle:(TCThrottle *)throttle;
-
-/// Removes all throttles from the touch controller.
-- (void)removeAllThrottles;
-
-/// Creates a new touchpad control with the provided descriptor.
-///
-/// - Parameters:
/// - descriptor: The `TCTouchpadDescriptor` containing the configuration for the touchpad.
/// - Returns: A new `TCTouchpad` instance.
-- (TCTouchpad *)touchpadWithDescriptor:(TCTouchpadDescriptor *)descriptor;
+- (TCTouchpad *)addTouchpadWithDescriptor:(TCTouchpadDescriptor *)descriptor NS_SWIFT_NAME(addTouchpad(descriptor:));
-/// Adds a touchpad to the touch controller.
-///
-/// - Parameters:
-/// - touchpad: The `TCTouchpad` to add.
-- (void)addTouchpad:(TCTouchpad *)touchpad;
-
-/// Removes a touchpad from the touch controller.
-///
-/// - Parameters:
-/// - touchpad: The `TCTouchpad` to remove.
-- (void)removeTouchpad:(TCTouchpad *)touchpad;
-
-/// Removes all touchpads from the touch controller.
-- (void)removeAllTouchpads;
-
/// Removes all controls from the touch controller.
- (void)removeAllControls;
+/// Removes the control from the touch controller.
+- (void)removeControl:(id<TCControl>)control;
+
// MARK: User Interaction
/// The control at the specified point, if any.
@@ -215,25 +157,25 @@
///
/// - Parameters:
/// - point: The point where the touch began.
-/// - index: An NSNumber representing a unique index for the touch
+/// - index: An integer representing a unique index for the touch
/// - Returns: `YES` if the touch was handled by a control; otherwise `NO`.
-- (BOOL)handleTouchBeganAtPoint:(CGPoint)point index:(NSNumber *)index;
+- (BOOL)handleTouchBeganAtPoint:(CGPoint)point index:(NSInteger)index;
/// Handles a touch moved event at the specified point.
///
/// - Parameters:
/// - point: The point where the touch moved to.
-/// - index: An NSNumber representing a unique index for the touch
+/// - index: An integer representing a unique index for the touch
/// - Returns: `YES` if the touch was handled by a control, `NO` otherwise.
-- (BOOL)handleTouchMovedAtPoint:(CGPoint)point index:(NSNumber *)index;
+- (BOOL)handleTouchMovedAtPoint:(CGPoint)point index:(NSInteger)index;
/// Handles a touch ended event at the specified point.
///
/// - Parameters:
/// - point: The point where the touch ended.
-/// - index: An NSNumber representing a unique index for the touch
+/// - index: An integer representing a unique index for the touch
/// - Returns: `YES` if the touch was handled by a control, `NO` otherwise.
-- (BOOL)handleTouchEndedAtPoint:(CGPoint)point index:(NSNumber *)index;
+- (BOOL)handleTouchEndedAtPoint:(CGPoint)point index:(NSInteger)index;
// MARK: Rendering
@@ -241,15 +183,8 @@
///
/// - Parameters:
/// - encoder: The `MTLRenderCommandEncoder` to use for rendering.
-- (void)renderWithRenderCommandEncoder:(id<MTLRenderCommandEncoder>)encoder;
+- (void)renderUsingRenderCommandEncoder:(id<MTLRenderCommandEncoder>)encoder;
-/// Called when the drawable size changes.
-///
-/// - Parameters:
-/// - size: The new size of the drawable in points.
-/// - scaleFactor: The new scale factor of the screen.
-- (void)drawableSizeWillChange:(CGSize)size scaleFactor:(CGFloat)scaleFactor;
-
// MARK: Game Controller
/// A Boolean value that indicates whether the touch controller is connected to the Game Controller framework.
@@ -262,9 +197,7 @@
- (void)disconnect;
/// The game controller instance associated with this touch controller.
-///
-/// - Returns: The `GCController` instance.
-- (GCController *)controller;
+@property (nonatomic, strong, readonly) GCController *controller;
@end
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchControllerDescriptor.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchControllerDescriptor.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchControllerDescriptor.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchControllerDescriptor.h 2025-08-04 11:59:55
@@ -7,25 +7,24 @@
#import <Metal/Metal.h>
+@class MTKView;
+
NS_ASSUME_NONNULL_BEGIN
/// A descriptor for configuring a touch controller.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCTouchControllerDescriptor : NSObject
/// The Metal device to use for rendering.
@property (nonatomic, readwrite, strong) id<MTLDevice> device;
-/// The width of the screen in points.
-@property (nonatomic, readwrite, assign) CGFloat screenWidth;
+/// The size of the view the touch controller's drawable is embedded in, in points.
+@property (nonatomic, readwrite, assign) CGSize size;
-/// The height of the screen in points.
-@property (nonatomic, readwrite, assign) CGFloat screenHeight;
+/// The size of the drawable to which the touch controller's contents be drawn, in native pixels.
+@property (nonatomic, readwrite, assign) CGSize drawableSize;
-/// The scale factor of the screen.
-///
-/// For example, 2.0 or 3.0 for Retina displays.
-@property (nonatomic, readwrite, assign) CGFloat scaleFactor;
-
/// The pixel format for the drawable texture.
@property (nonatomic, readwrite, assign) MTLPixelFormat colorPixelFormat;
@@ -37,6 +36,9 @@
/// The number of samples per pixel for multisampling.
@property (nonatomic, readwrite, assign) NSUInteger sampleCount;
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+- (instancetype)initWithMTKView:(MTKView *)mtkView;
@end
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchpad.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchpad.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchpad.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTouchpad.h 2025-08-04 11:59:55
@@ -6,12 +6,10 @@
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <Metal/Metal.h>
-#import <simd/simd.h>
-#import <TouchController/TCTransform.h>
-#import <TouchController/TCCollider.h>
+#import <TouchController/TCControlLayout.h>
#import <TouchController/TCControl.h>
-#import <TouchController/TCControlVisuals.h>
+#import <TouchController/TCControlContents.h>
@class TCTouchController;
@@ -20,39 +18,23 @@
/// Represents a single on-screen touchpad that reports absolute coordinates or delta movements.
///
/// This is mirrored by a `GCControllerDirectionPad` on the associated `GCController` instance.
-@interface TCTouchpad : NSObject<TCControl, TCTransform>
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
+@interface TCTouchpad : NSObject<TCControl, TCControlLayout>
-/// The touch controller that manages this touchpad.
-@property (nonatomic, strong, readonly) TCTouchController *touchController;
+/// The contents for the touchpad. May be `nil`.
+@property (nonatomic, strong, nullable) TCControlContents *contents;
-/// The visuals for the touchpad. May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *visuals;
+/// The collider shape for the touchpad.
+@property (nonatomic, assign, readonly) TCColliderShape colliderShape;
-/// The position of the touchpad in points, with the origin at the top left corner of the screen.
-@property (nonatomic, assign, readonly) CGPoint position;
-
-/// The anchor point that the touchpad's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
-
-/// The control's offset from the anchor, which determines its position.
-@property (nonatomic, assign) CGPoint offset;
-
-/// The layer of the touchpad, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
-
-/// The width and height of the touchpad. in points.
-@property (nonatomic, assign) CGSize size;
-
-/// The collider for the touchpad.
-@property (nonatomic, strong) id<TCCollider> collider;
-
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// A Boolean value that represents the touchpad reports deltas.
///
-/// If `YES`, the touchpad will report delta values as touch moves instead of absolute positions.
-@property (nonatomic, assign) BOOL reportsDeltas;
+/// If `YES`, the touchpad will report relative delta changes between frames as touch moves instead of absolute positions.
+@property (nonatomic, assign) BOOL reportsRelativeValues;
/// Not available. Create the control via a `TCTouchController`.
- (instancetype)init NS_UNAVAILABLE;
@@ -62,36 +44,41 @@
/// A descriptor for configuring a touchpad.
+__attribute__((visibility ("default")))
+API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macCatalyst, visionos)
@interface TCTouchpadDescriptor : NSObject
/// The label associated with the touchpad.
@property (nonatomic, strong) TCControlLabel *label;
-/// The visuals for the touchpad.
+/// The contents for the touchpad.
///
/// May be `nil`.
-@property (nonatomic, strong, nullable) TCControlVisuals *visuals;
+@property (nonatomic, strong, nullable) TCControlContents *contents;
/// The anchor point that the touchpad's offset is relative to.
-@property (nonatomic, assign) TCTransformAnchor anchor;
+@property (nonatomic, assign) TCControlLayoutAnchor anchor;
+
+/// The coordinate system for the control's anchor point.
+@property (nonatomic, assign) TCControlLayoutAnchorCoordinateSystem anchorCoordinateSystem;
/// The control's offset from the anchor, which determines its position.
@property (nonatomic, assign) CGPoint offset;
-/// The layer of the touchpad, used for z-sorting.
-@property (nonatomic, assign) simd_int1 layer;
+/// The z-index of the touchpad. A lower z-index is drawn first.
+@property (nonatomic, assign) NSInteger zIndex;
/// The size (width, height) of the touchpad in points.
@property (nonatomic, assign) CGSize size;
-/// The type of collider to use for the touchpad.
-@property (nonatomic, assign) TCColliderType colliderType;
+/// The shape of collider to use for the touchpad.
+@property (nonatomic, assign) TCColliderShape colliderShape;
/// The time it takes for a highlight to fade away, in seconds.
-@property (nonatomic, assign) simd_float1 highlightTime;
+@property (nonatomic, assign) NSTimeInterval highlightDuration;
/// A Boolean value that represents the touchpad reports deltas.
///
/// If `YES`, the touchpad will report delta values as touch moves instead of absolute positions.
-@property (nonatomic, assign) BOOL reportsDeltas;
+@property (nonatomic, assign) BOOL reportsRelativeValues;
/// Creates a new touchpad descriptor with default values.
- (instancetype)init;
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTransform.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTransform.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTransform.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TCTransform.h 1970-01-01 01:00:00
@@ -1,72 +0,0 @@
-//
-// TCTransform.h
-// TouchController
-//
-
-#import <Foundation/Foundation.h>
-
-#import <simd/simd.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// Defines the anchor point for a transform.
-typedef NS_ENUM(NSInteger, TCTransformAnchor) {
- /// Anchors to the top-left corner, relative to the screen size.
- TCTransformAnchorTopLeft,
- /// Anchors to the top-center, relative to the screen size.
- TCTransformAnchorTopCenter,
- /// Anchors to the top-right corner, relative to the screen size.
- TCTransformAnchorTopRight,
- /// Anchors to the center-left, relative to the screen size.
- TCTransformAnchorCenterLeft,
- /// Anchors to the center, relative to the screen size.
- TCTransformAnchorCenter,
- /// Anchors to the center-right, relative to the screen size.
- TCTransformAnchorCenterRight,
- /// Anchors to the bottom-left corner, relative to the screen size.
- TCTransformAnchorBottomLeft,
- /// Anchors to the bottom-center, relative to the screen size.
- TCTransformAnchorBottomCenter,
- /// Anchors to the bottom-right corner, relative to the screen size.
- TCTransformAnchorBottomRight,
-
- /// Anchors to the top-left corner, using absolute coordinates.
- TCTransformAnchorAbsoluteTopLeft,
- /// Anchors to the top-center, using absolute coordinates.
- TCTransformAnchorAbsoluteTopCenter,
- /// Anchors to the top-right corner, using absolute coordinates.
- TCTransformAnchorAbsoluteTopRight,
- /// Anchors to the center-left, using absolute coordinates.
- TCTransformAnchorAbsoluteCenterLeft,
- /// Anchors to the center, using absolute coordinates.
- TCTransformAnchorAbsoluteCenter,
- /// Anchors to the center-right, using absolute coordinates.
- TCTransformAnchorAbsoluteCenterRight,
- /// Anchors to the bottom-left corner, using absolute coordinates.
- TCTransformAnchorAbsoluteBottomLeft,
- /// Anchors to the bottom-center, using absolute coordinates.
- TCTransformAnchorAbsoluteBottomCenter,
- /// Anchors to the bottom-right corner, using absolute coordinates.
- TCTransformAnchorAbsoluteBottomRight,
-};
-
-/// A protocol defining the transform properties for a control.
-@protocol TCTransform <NSObject>
-
-@required
-
-/// The anchor point of the transform.
-@property (nonatomic, assign) TCTransformAnchor anchor;
-/// The offset from the anchor point.
-@property (nonatomic, assign) CGPoint offset;
-/// The layer of the transform, used for z-ordering.
-@property (nonatomic, assign) simd_int1 layer;
-/// The size of the transform in points.
-@property (nonatomic, assign) CGSize size;
-
-/// The calculated position of the transform.
-- (CGPoint)position;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TouchController.h /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TouchController.h
--- /Applications/Xcode_26.0.0-beta5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TouchController.h 2025-07-24 07:36:07
+++ /Applications/Xcode_26.0.0-beta6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/TouchController.framework/Headers/TouchController.h 2025-08-04 11:59:54
@@ -3,19 +3,16 @@
// TCTouchController
//
-#import <TouchController/TCTransform.h>
-#import <TouchController/TCCollider.h>
-#import <TouchController/TCRectCollider.h>
-#import <TouchController/TCCircleCollider.h>
-#import <TouchController/TCRegionCollider.h>
+#import <TouchController/TCControlLayout.h>
+#import <TouchController/TCColliderShape.h>
-#import <TouchController/TCControlVisuals.h>
-#import <TouchController/TCSpriteRenderer.h>
-#import <TouchController/TCControlSystemVisualsProvider.h>
+#import <TouchController/TCControlContents.h>
+#import <TouchController/TCControlImage.h>
#import <TouchController/TCControl.h>
#import <TouchController/TCControlLabel.h>
#import <TouchController/TCButton.h>
+#import <TouchController/TCSwitch.h>
#import <TouchController/TCThumbstick.h>
#import <TouchController/TCDirectionPad.h>
#import <TouchController/TCTouchpad.h>