refactor(apple): mark more (view)model members as @objc (#10433) 3bd0ee9ad9

Co-authored-by: David Skuza <david@rive.app>
This commit is contained in:
dskuza
2025-08-27 14:55:10 +00:00
parent 545b1c92da
commit e896ee7a1e
5 changed files with 32 additions and 22 deletions

View File

@@ -1 +1 @@
827077b899b109dcb4b5eb57c8e999246f5d44b5
3bd0ee9ad9142a72767898ff8d58c779cb5c7bda

View File

@@ -21,15 +21,15 @@ import Combine
private var isAutoBindEnabled = false
private var autoBindCallback: AutoBindCallback?
public init(riveFile: RiveFile) {
@objc public init(riveFile: RiveFile) {
self.riveFile = riveFile
}
public init(fileName: String, extension: String = ".riv", in bundle: Bundle = .main, loadCdn: Bool = true, customLoader: LoadAsset? = nil) throws {
@objc public init(fileName: String, extension: String = ".riv", in bundle: Bundle = .main, loadCdn: Bool = true, customLoader: LoadAsset? = nil) throws {
riveFile = try RiveFile(name: fileName, extension: `extension`, in: bundle, loadCdn: loadCdn, customLoader: customLoader)
}
public init(webURL: String, delegate: RiveFileDelegate, loadCdn: Bool) {
@objc public init(webURL: String, delegate: RiveFileDelegate, loadCdn: Bool) {
riveFile = RiveFile(httpUrl: webURL, loadCdn:loadCdn, with: delegate)!
}
@@ -57,7 +57,7 @@ import Combine
// MARK: - Setters
/// Sets a new Artboard and makes the current StateMachine and Animation nil
open func setArtboard(_ name: String) throws {
@objc open func setArtboard(_ name: String) throws {
do {
RiveLogger.log(model: self, event: .artboardByName(name))
stateMachine = nil
@@ -101,7 +101,7 @@ import Combine
}
}
open func setStateMachine(_ name: String) throws {
@objc open func setStateMachine(_ name: String) throws {
do {
stateMachine = try artboard.stateMachine(fromName: name)
RiveLogger.log(model: self, event: .stateMachineByName(name))
@@ -143,7 +143,7 @@ import Combine
}
}
open func setAnimation(_ name: String) throws {
@objc open func setAnimation(_ name: String) throws {
guard animation?.name() != name else { return }
do {
animation = try artboard.animation(fromName: name)

View File

@@ -193,7 +193,7 @@ open class RiveView: RiveRendererView {
#endif
/// This resets the view with the new model. Useful when the `RiveView` was initialized without one.
open func setModel(_ model: RiveModel, autoPlay: Bool = true) throws {
@objc open func setModel(_ model: RiveModel, autoPlay: Bool = true) throws {
stopTimer()
isPlaying = false
riveModel = model
@@ -216,6 +216,7 @@ open class RiveView: RiveRendererView {
/// Hints to underlying CADisplayLink the preferred FPS to run at
/// - Parameters:
/// - preferredFramesPerSecond: Integer number of seconds to set preferred FPS at
@objc(setPreferredFPS:)
open func setPreferredFramesPerSecond(preferredFramesPerSecond: Int) {
userFPS = preferredFramesPerSecond
displaySync?.set(preferredFramesPerSecond: preferredFramesPerSecond)
@@ -225,6 +226,7 @@ open class RiveView: RiveRendererView {
/// - Parameters:
/// - preferredFrameRateRange: Frame rate range to set
@available(iOS 15, macOS 14, tvOS 15, visionOS 1, *)
@objc(setPreferredFrameRateRange:)
open func setPreferredFrameRateRange(preferredFrameRateRange: CAFrameRateRange) {
userFPS = preferredFrameRateRange
displaySync?.set(preferredFrameRateRange: preferredFrameRateRange)

View File

@@ -167,7 +167,7 @@ import Combine
// MARK: - RiveView
open private(set) var riveModel: RiveModel? {
@objc open private(set) var riveModel: RiveModel? {
didSet {
if let model = riveModel {
try! riveView?.setModel(model, autoPlay: autoPlay)
@@ -175,22 +175,22 @@ import Combine
}
}
open var isPlaying: Bool { riveView?.isPlaying ?? false }
open var autoPlay: Bool
open var fit: RiveFit = .contain {
@objc open var isPlaying: Bool { riveView?.isPlaying ?? false }
@objc open var autoPlay: Bool
@objc open var fit: RiveFit = .contain {
didSet { riveView?.fit = fit }
}
open var alignment: RiveAlignment = .center {
@objc open var alignment: RiveAlignment = .center {
didSet { riveView?.alignment = alignment }
}
/// The scale factor to apply when using the `layout` fit. By default, this value is -1, where Rive will determine
/// the correct scale for your device.To override this default behavior, set this value to a value greater than 0.
/// - Note: If the scale factor <= 0, nothing will be drawn.
open var layoutScaleFactor: Double = layoutScaleFactorAutomatic {
@objc open var layoutScaleFactor: Double = layoutScaleFactorAutomatic {
didSet { riveView?.layoutScaleFactor = layoutScaleFactor }
}
@@ -199,7 +199,7 @@ import Combine
/// When false, only the Rive view will handle touch / click events, and will not forward
/// to any next responder(s). Defaults to `false`, as to preserve pre-existing runtime functionality.
/// - Note: On iOS, this is handled separately from `isExclusiveTouch`.
open var forwardsListenerEvents: Bool = false {
@objc open var forwardsListenerEvents: Bool = false {
didSet { riveView?.forwardsListenerEvents = forwardsListenerEvents }
}
@@ -209,6 +209,7 @@ import Combine
/// - Parameters:
/// - preferredFramesPerSecond: Integer number of seconds to set preferred FPS at
@available(macOS 14, *)
@objc(setPreferredFramesPerSecond:)
public func setPreferredFramesPerSecond(preferredFramesPerSecond: Int) {
riveView?.setPreferredFramesPerSecond(preferredFramesPerSecond: preferredFramesPerSecond)
}
@@ -218,6 +219,7 @@ import Combine
/// - Parameters:
/// - preferredFrameRateRange: Frame rate range to set
@available(macOS 14, *)
@objc(setPreferredFrameRateRange)
public func setPreferredFrameRateRange(preferredFrameRateRange: CAFrameRateRange) {
riveView?.setPreferredFrameRateRange(preferredFrameRateRange: preferredFrameRateRange)
}
@@ -226,7 +228,8 @@ import Combine
/// For more, see: https://developer.apple.com/documentation/quartzcore/cadisplaylink/1648421-preferredframespersecond
/// - Parameters:
/// - preferredFramesPerSecond: Integer number of seconds to set preferred FPS at
public func setPreferredFramesPerSecond(preferredFramesPerSecond: Int) {
@objc(setPreferredFramesPerSecond:)
open func setPreferredFramesPerSecond(preferredFramesPerSecond: Int) {
riveView?.setPreferredFramesPerSecond(preferredFramesPerSecond: preferredFramesPerSecond)
}
@@ -235,7 +238,8 @@ import Combine
/// - Parameters:
/// - preferredFrameRateRange: Frame rate range to set
@available(iOS 15.0, tvOS 15.0, visionOS 1.0, *)
public func setPreferredFrameRateRange(preferredFrameRateRange: CAFrameRateRange) {
@objc(setPreferredFrameRateRange:)
open func setPreferredFrameRateRange(preferredFrameRateRange: CAFrameRateRange) {
riveView?.setPreferredFrameRateRange(preferredFrameRateRange: preferredFrameRateRange)
}
#endif
@@ -422,7 +426,7 @@ import Combine
/// - Parameters:
/// - inputName: The name of a `Trigger` input on the active StateMachine
/// - path: A String representing the path to the nested artboard delimited by "/" (ie. "Nested" or "Level1/Level2/Level3")
open func triggerInput(_ inputName: String, path: String) {
@objc open func triggerInput(_ inputName: String, path: String) {
RiveLogger.log(viewModel: self, event: .triggerInput(inputName, path))
riveModel?.artboard?.getTrigger(inputName, path: path).fire()
play()
@@ -433,6 +437,7 @@ import Combine
/// - inputName: The name of a `Boolean` input on the active StateMachine
/// - value: A Bool value for the input
/// - path: A String representing the path to the nested artboard delimited by "/" (ie. "Nested" or "Level1/Level2/Level3")
@objc(setBooleanInput:value:atPath:)
open func setInput(_ inputName: String, value: Bool, path: String) {
RiveLogger.log(viewModel: self, event: .booleanInput(inputName, path, value))
riveModel?.artboard?.getBool(inputName, path: path).setValue(value)
@@ -444,6 +449,7 @@ import Combine
/// - inputName: The name of a `Number` input on the active StateMachine
/// - value: A Float value for the input
/// - path: A String representing the path to the nested artboard delimited by "/" (ie. "Nested" or "Level1/Level2/Level3")
@objc(setFloatInput:value:atPath:)
open func setInput(_ inputName: String, value: Float, path: String) {
RiveLogger.log(viewModel: self, event: .floatInput(inputName, path, value))
riveModel?.artboard?.getNumber(inputName, path: path).setValue(value);
@@ -455,6 +461,7 @@ import Combine
/// - inputName: The name of a `Number` input on the active StateMachine
/// - value: A Double value for the input
/// - path: A String representing the path to the nested artboard delimited by "/" (ie. "Nested" or "Level1/Level2/Level3")
@objc(setDoubleInput:value:atPath:)
open func setInput(_ inputName: String, value: Double, path: String) {
RiveLogger.log(viewModel: self, event: .doubleInput(inputName, path, value))
setInput(inputName, value: Float(value), path: path)
@@ -555,6 +562,7 @@ import Combine
return view
}
@objc(setRiveView:)
open func setRiveView(view:RiveView)
{
registerView(view)
@@ -586,7 +594,7 @@ import Combine
}
/// Stops maintaining a connection to any `RiveView`
open func deregisterView() {
@objc open func deregisterView() {
riveView = nil
}

View File

@@ -9,7 +9,7 @@
import Foundation
extension RiveStateMachineInstance {
public var inputs: [StateMachineInput] {
@objc public var inputs: [StateMachineInput] {
var inputs: [StateMachineInput] = []
for i in 0 ..< inputCount() {