Skip to content

Commit 8805e6e

Browse files
committed
fix(ios): pass fit in Rive constructor, bump rive-ios to 6.19.1
Passes fit directly in the Rive() constructor instead of setting it after creation. Removes the layoutSubviews workaround since rive-ios 6.19.1 fixes the MTKView drawable timing issue (rive-ios#443).
1 parent dcfc431 commit 8805e6e

3 files changed

Lines changed: 6 additions & 22 deletions

File tree

ios/new/HybridRiveFileFactory.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@_spi(RiveExperimental) import RiveRuntime
1+
import RiveRuntime
22
import NitroModules
33

44
final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendable {
@@ -24,8 +24,9 @@ final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendabl
2424
let data = try await HTTPDataLoader.shared.downloadData(from: fileURL)
2525
RCTLog("[HybridRiveFileFactory] fromURL: downloaded \(data.count) bytes")
2626
let worker = try await HybridRiveFileFactory.sharedWorkerTask.value
27-
RCTLog("[HybridRiveFileFactory] fromURL: got shared worker")
27+
RCTLog("[HybridRiveFileFactory] fromURL: got shared worker, referencedAssets=\(referencedAssets == nil ? "nil" : "\(referencedAssets!.data?.count ?? -1) assets"), keys=\(referencedAssets?.data?.keys.sorted() ?? [])")
2828
await ExperimentalAssetLoader.registerAssets(referencedAssets, on: worker)
29+
RCTLog("[HybridRiveFileFactory] fromURL: assets registered, creating file...")
2930
let file = try await File(source: .data(data), worker: worker)
3031
RCTLog("[HybridRiveFileFactory] fromURL: created file")
3132
return HybridRiveFile(file: file, worker: worker)

ios/new/HybridRiveView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@_spi(RiveExperimental) import RiveRuntime
1+
import RiveRuntime
22
import Foundation
33
import NitroModules
44
import UIKit

ios/new/RiveReactNativeView.swift

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import RiveRuntime
22
import NitroModules
33
import UIKit
4-
import MetalKit
54

65
enum ExperimentalBindData {
76
case none
@@ -28,23 +27,8 @@ class RiveReactNativeView: UIView {
2827
private var isViewReady = false
2928
private var configTask: Task<Void, Never>?
3029
private var isPaused = false
31-
private var pendingFit: RiveRuntime.Fit?
32-
3330
var autoPlay: Bool = true
3431

35-
override func layoutSubviews() {
36-
super.layoutSubviews()
37-
applyPendingFitIfMTKViewReady()
38-
}
39-
40-
// https://github.com/rive-app/rive-nitro-react-native/pull/231
41-
private func applyPendingFitIfMTKViewReady() {
42-
guard let fit = pendingFit, let rive = riveInstance,
43-
riveUIView?.subviews.contains(where: { $0 is MTKView }) == true else { return }
44-
rive.fit = fit
45-
pendingFit = nil
46-
}
47-
4832
func awaitViewReady() async -> Bool {
4933
if !isViewReady {
5034
await withCheckedContinuation { continuation in
@@ -101,7 +85,8 @@ class RiveReactNativeView: UIView {
10185
file: config.file,
10286
artboard: artboard,
10387
stateMachine: stateMachine,
104-
dataBind: dataBind
88+
dataBind: dataBind,
89+
fit: config.fit
10590
)
10691

10792
guard !Task.isCancelled else { return }
@@ -110,8 +95,6 @@ class RiveReactNativeView: UIView {
11095
self.riveInstance = rive
11196
self.setupRiveUIView(with: rive)
11297

113-
self.pendingFit = config.fit
114-
11598
if config.autoPlay {
11699
self.isPaused = false
117100
}

0 commit comments

Comments
 (0)