mirror of
https://github.com/rive-app/rive-ios.git
synced 2026-01-18 17:11:28 +01:00
Changed the main example selection screen to use a UITableView (to more easily add or remove examples) wrapped in a UISplitViewController so it will layout well on iPads also
This commit is contained in:
committed by
Zachary Duncan
parent
8060d387b0
commit
9d703e9867
7
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
@@ -48,6 +48,8 @@
|
|||||||
C324DB5B2807216B0060589F /* RiveSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C324DB5A2807216B0060589F /* RiveSlider.swift */; };
|
C324DB5B2807216B0060589F /* RiveSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C324DB5A2807216B0060589F /* RiveSlider.swift */; };
|
||||||
C324DB5D280728690060589F /* RiveButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = C324DB5C280728690060589F /* RiveButton.swift */; };
|
C324DB5D280728690060589F /* RiveButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = C324DB5C280728690060589F /* RiveButton.swift */; };
|
||||||
C324DB5F280740FB0060589F /* rbutton.riv in Resources */ = {isa = PBXBuildFile; fileRef = C324DB5E280740FB0060589F /* rbutton.riv */; };
|
C324DB5F280740FB0060589F /* rbutton.riv in Resources */ = {isa = PBXBuildFile; fileRef = C324DB5E280740FB0060589F /* rbutton.riv */; };
|
||||||
|
C3357CA1280F42EC00F03B6F /* ExamplesMaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3357CA0280F42EC00F03B6F /* ExamplesMaster.swift */; };
|
||||||
|
C3357CA5280F430000F03B6F /* ExamplesDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3357CA4280F430000F03B6F /* ExamplesDetail.swift */; };
|
||||||
C3460A002800A6CE002DBCB7 /* bird.riv in Resources */ = {isa = PBXBuildFile; fileRef = C34609FD2800A6CE002DBCB7 /* bird.riv */; };
|
C3460A002800A6CE002DBCB7 /* bird.riv in Resources */ = {isa = PBXBuildFile; fileRef = C34609FD2800A6CE002DBCB7 /* bird.riv */; };
|
||||||
C3468E6227FDCBC6008652FD /* SimpleSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3468E6127FDCBC6008652FD /* SimpleSlider.swift */; };
|
C3468E6227FDCBC6008652FD /* SimpleSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3468E6127FDCBC6008652FD /* SimpleSlider.swift */; };
|
||||||
C3D187F3280751A8008B739A /* RiveProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3D187F2280751A8008B739A /* RiveProgressBar.swift */; };
|
C3D187F3280751A8008B739A /* RiveProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3D187F2280751A8008B739A /* RiveProgressBar.swift */; };
|
||||||
@@ -141,6 +143,8 @@
|
|||||||
C324DB5A2807216B0060589F /* RiveSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiveSlider.swift; sourceTree = "<group>"; };
|
C324DB5A2807216B0060589F /* RiveSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiveSlider.swift; sourceTree = "<group>"; };
|
||||||
C324DB5C280728690060589F /* RiveButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiveButton.swift; sourceTree = "<group>"; };
|
C324DB5C280728690060589F /* RiveButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiveButton.swift; sourceTree = "<group>"; };
|
||||||
C324DB5E280740FB0060589F /* rbutton.riv */ = {isa = PBXFileReference; lastKnownFileType = file; path = rbutton.riv; sourceTree = "<group>"; };
|
C324DB5E280740FB0060589F /* rbutton.riv */ = {isa = PBXFileReference; lastKnownFileType = file; path = rbutton.riv; sourceTree = "<group>"; };
|
||||||
|
C3357CA0280F42EC00F03B6F /* ExamplesMaster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExamplesMaster.swift; sourceTree = "<group>"; };
|
||||||
|
C3357CA4280F430000F03B6F /* ExamplesDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExamplesDetail.swift; sourceTree = "<group>"; };
|
||||||
C34609FD2800A6CE002DBCB7 /* bird.riv */ = {isa = PBXFileReference; lastKnownFileType = file; path = bird.riv; sourceTree = "<group>"; };
|
C34609FD2800A6CE002DBCB7 /* bird.riv */ = {isa = PBXFileReference; lastKnownFileType = file; path = bird.riv; sourceTree = "<group>"; };
|
||||||
C3468E6127FDCBC6008652FD /* SimpleSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleSlider.swift; sourceTree = "<group>"; };
|
C3468E6127FDCBC6008652FD /* SimpleSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleSlider.swift; sourceTree = "<group>"; };
|
||||||
C3D187F2280751A8008B739A /* RiveProgressBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiveProgressBar.swift; sourceTree = "<group>"; };
|
C3D187F2280751A8008B739A /* RiveProgressBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiveProgressBar.swift; sourceTree = "<group>"; };
|
||||||
@@ -294,16 +298,18 @@
|
|||||||
C9C73E9624FC471E00EF9516 /* Source */ = {
|
C9C73E9624FC471E00EF9516 /* Source */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
04A8F6C226452F25002C909A /* lib */,
|
|
||||||
C324DB592807202A0060589F /* Widgets */,
|
C324DB592807202A0060589F /* Widgets */,
|
||||||
C9A84F342644931E0014D8E0 /* SwiftUI */,
|
C9A84F342644931E0014D8E0 /* SwiftUI */,
|
||||||
042C88862643DB2200E7DBB2 /* UIkit */,
|
042C88862643DB2200E7DBB2 /* UIkit */,
|
||||||
C9C73E9724FC471E00EF9516 /* AppDelegate.swift */,
|
042C88822643D6B900E7DBB2 /* Main.storyboard */,
|
||||||
C9C73E9924FC471E00EF9516 /* SceneDelegate.swift */,
|
C3357CA0280F42EC00F03B6F /* ExamplesMaster.swift */,
|
||||||
C9C73EA524FC471E00EF9516 /* Info.plist */,
|
C3357CA4280F430000F03B6F /* ExamplesDetail.swift */,
|
||||||
C9C73E9D24FC471E00EF9516 /* Assets.xcassets */,
|
C9C73E9D24FC471E00EF9516 /* Assets.xcassets */,
|
||||||
C9C73E9F24FC471E00EF9516 /* Preview Content */,
|
C9C73E9F24FC471E00EF9516 /* Preview Content */,
|
||||||
042C88822643D6B900E7DBB2 /* Main.storyboard */,
|
04A8F6C226452F25002C909A /* lib */,
|
||||||
|
C9C73E9924FC471E00EF9516 /* SceneDelegate.swift */,
|
||||||
|
C9C73E9724FC471E00EF9516 /* AppDelegate.swift */,
|
||||||
|
C9C73EA524FC471E00EF9516 /* Info.plist */,
|
||||||
);
|
);
|
||||||
path = Source;
|
path = Source;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -458,9 +464,11 @@
|
|||||||
C9CB2F13264C92D200E7FF0D /* RiveComponents.swift in Sources */,
|
C9CB2F13264C92D200E7FF0D /* RiveComponents.swift in Sources */,
|
||||||
042C888E2644230700E7DBB2 /* utility.swift in Sources */,
|
042C888E2644230700E7DBB2 /* utility.swift in Sources */,
|
||||||
C3D187F3280751A8008B739A /* RiveProgressBar.swift in Sources */,
|
C3D187F3280751A8008B739A /* RiveProgressBar.swift in Sources */,
|
||||||
|
C3357CA5280F430000F03B6F /* ExamplesDetail.swift in Sources */,
|
||||||
E5CD7D7127DC331900BFE5E2 /* SwiftMeshAnimation.swift in Sources */,
|
E5CD7D7127DC331900BFE5E2 /* SwiftMeshAnimation.swift in Sources */,
|
||||||
042C88902644250D00E7DBB2 /* MultipleAnimations.swift in Sources */,
|
042C88902644250D00E7DBB2 /* MultipleAnimations.swift in Sources */,
|
||||||
C3468E6227FDCBC6008652FD /* SimpleSlider.swift in Sources */,
|
C3468E6227FDCBC6008652FD /* SimpleSlider.swift in Sources */,
|
||||||
|
C3357CA1280F42EC00F03B6F /* ExamplesMaster.swift in Sources */,
|
||||||
C324DB5628071EB80060589F /* RiveSwitch.swift in Sources */,
|
C324DB5628071EB80060589F /* RiveSwitch.swift in Sources */,
|
||||||
04026DC827CE3EE6002B3DBF /* SwiftLayout.swift in Sources */,
|
04026DC827CE3EE6002B3DBF /* SwiftLayout.swift in Sources */,
|
||||||
04026DCC27CE3F03002B3DBF /* SwiftLoopMode.swift in Sources */,
|
04026DCC27CE3F03002B3DBF /* SwiftLoopMode.swift in Sources */,
|
||||||
|
|||||||
113
Example-iOS/Source/ExamplesMaster.swift
Normal file
113
Example-iOS/Source/ExamplesMaster.swift
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
//
|
||||||
|
// ExamplesMaster.swift
|
||||||
|
// RiveExample
|
||||||
|
//
|
||||||
|
// Created by Zachary Duncan on 4/19/22.
|
||||||
|
// Copyright © 2022 Rive. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
import RiveRuntime
|
||||||
|
|
||||||
|
class ExamplesMasterTableViewController: UITableViewController {
|
||||||
|
private let storyboardIDs: [String] = [
|
||||||
|
"Simple Animation",
|
||||||
|
"Layout",
|
||||||
|
"MultipleAnimations",
|
||||||
|
"Loop Mode",
|
||||||
|
"State Machine",
|
||||||
|
// "iOS Player",
|
||||||
|
"Blend Mode",
|
||||||
|
"Slider Widget"
|
||||||
|
]
|
||||||
|
|
||||||
|
private enum SwiftViews: StringLiteralType, CaseIterable {
|
||||||
|
case components = "Widget Collection"
|
||||||
|
case simpleAnimation = "Simple Animation"
|
||||||
|
case layout = "Layout"
|
||||||
|
case multiple = "MultipleAnimations"
|
||||||
|
case loop = "Loop Mode"
|
||||||
|
case stateMachine = "State Machine"
|
||||||
|
case mesh = "Mesh Animation"
|
||||||
|
}
|
||||||
|
|
||||||
|
private let viewModels: [(String, RiveViewModel)] = [
|
||||||
|
("Slider Widget", RiveSlider())
|
||||||
|
]
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||||
|
return storyboardIDs.count + SwiftViews.allCases.count + viewModels.count
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||||
|
let i = indexPath.row
|
||||||
|
let cell = UITableViewCell()
|
||||||
|
|
||||||
|
// ViewControllers made from Storyboard IDs
|
||||||
|
if i < storyboardIDs.count {
|
||||||
|
cell.textLabel?.text = storyboardIDs[indexPath.row]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Views made by custom SwiftUI Views
|
||||||
|
else if i < storyboardIDs.count + SwiftViews.allCases.count {
|
||||||
|
cell.textLabel?.text = SwiftViews.allCases[i - storyboardIDs.count].rawValue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Views made by the ViewModels
|
||||||
|
else {
|
||||||
|
cell.textLabel?.text = viewModels[i - (storyboardIDs.count + SwiftViews.allCases.count)].0
|
||||||
|
}
|
||||||
|
|
||||||
|
return cell
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
|
let i = indexPath.row
|
||||||
|
var controller: UIViewController
|
||||||
|
|
||||||
|
// ViewControllers made from Storyboard IDs
|
||||||
|
if i < storyboardIDs.count {
|
||||||
|
controller = storyboard!.instantiateViewController(withIdentifier: storyboardIDs[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
// Views made by custom SwiftUI Views
|
||||||
|
else if i < storyboardIDs.count + SwiftViews.allCases.count {
|
||||||
|
var anyView: AnyView
|
||||||
|
|
||||||
|
switch SwiftViews.allCases[i - storyboardIDs.count] {
|
||||||
|
case .components: anyView = typeErased(dismissableView: RiveComponents())
|
||||||
|
case .simpleAnimation: anyView = typeErased(dismissableView: SwiftSimpleAnimation())
|
||||||
|
case .layout: anyView = typeErased(dismissableView: SwiftLayout())
|
||||||
|
case .multiple: anyView = typeErased(dismissableView: SwiftMultipleAnimations())
|
||||||
|
case .loop: anyView = typeErased(dismissableView: SwiftLoopMode())
|
||||||
|
case .stateMachine: anyView = typeErased(dismissableView: SwiftStateMachine())
|
||||||
|
case .mesh: anyView = typeErased(dismissableView: SwiftMeshAnimation())
|
||||||
|
}
|
||||||
|
|
||||||
|
controller = UIHostingController(rootView: anyView)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Views made by the ViewModels
|
||||||
|
else {
|
||||||
|
let anyView = AnyView(viewModels[i - (storyboardIDs.count + SwiftViews.allCases.count)].1.view())
|
||||||
|
controller = UIHostingController(rootView: anyView)
|
||||||
|
}
|
||||||
|
|
||||||
|
splitViewController?.showDetailViewController(controller, sender: self)
|
||||||
|
}
|
||||||
|
|
||||||
|
private func typeErased<Content: DismissableView>(dismissableView: Content) -> AnyView {
|
||||||
|
var view = dismissableView
|
||||||
|
view.dismiss = {
|
||||||
|
self.dismiss(animated: true, completion: nil)
|
||||||
|
self.navigationController?.popViewController(animated: true)
|
||||||
|
}
|
||||||
|
|
||||||
|
return AnyView(view)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public protocol DismissableView: View {
|
||||||
|
init()
|
||||||
|
var dismiss: () -> Void { get set }
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="FPy-V6-MlI">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Jj8-QH-eAe">
|
||||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
@@ -9,6 +9,75 @@
|
|||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
|
<!--View Controller-->
|
||||||
|
<scene sceneID="Ofc-Em-JP5">
|
||||||
|
<objects>
|
||||||
|
<viewController id="Rif-Z2-ml6" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="yE1-5o-Uq1">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<viewLayoutGuide key="safeArea" id="vdE-WD-ztg"/>
|
||||||
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||||
|
</view>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="QEY-6T-0Mo" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="117" y="-1045"/>
|
||||||
|
</scene>
|
||||||
|
<!--Root View Controller-->
|
||||||
|
<scene sceneID="XV1-T1-lAJ">
|
||||||
|
<objects>
|
||||||
|
<tableViewController clearsSelectionOnViewWillAppear="NO" id="oFD-NX-sZZ" customClass="ExamplesMasterTableViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="WCh-4c-dF3">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||||
|
<prototypes>
|
||||||
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="0PG-f3-SIb">
|
||||||
|
<rect key="frame" x="0.0" y="44.5" width="414" height="43.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="0PG-f3-SIb" id="srj-Fp-thS">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</tableViewCellContentView>
|
||||||
|
</tableViewCell>
|
||||||
|
</prototypes>
|
||||||
|
<connections>
|
||||||
|
<outlet property="dataSource" destination="oFD-NX-sZZ" id="tW3-o5-5go"/>
|
||||||
|
<outlet property="delegate" destination="oFD-NX-sZZ" id="el9-mJ-yKI"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
<navigationItem key="navigationItem" title="Root View Controller" id="D8Z-my-oJi"/>
|
||||||
|
</tableViewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="HFb-68-BQh" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="1038" y="-1918"/>
|
||||||
|
</scene>
|
||||||
|
<!--Navigation Controller-->
|
||||||
|
<scene sceneID="foC-i9-QZA">
|
||||||
|
<objects>
|
||||||
|
<navigationController id="0Wt-ue-AAA" sceneMemberID="viewController">
|
||||||
|
<navigationBar key="navigationBar" contentMode="scaleToFill" id="pOo-q8-9Up">
|
||||||
|
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</navigationBar>
|
||||||
|
</navigationController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="HNW-hv-lLR" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="116" y="-2236"/>
|
||||||
|
</scene>
|
||||||
|
<!--Split View Controller-->
|
||||||
|
<scene sceneID="3PL-ZH-SYd">
|
||||||
|
<objects>
|
||||||
|
<splitViewController allowDoubleColumnStyle="YES" id="Jj8-QH-eAe" sceneMemberID="viewController">
|
||||||
|
<connections>
|
||||||
|
<segue destination="oFD-NX-sZZ" kind="relationship" relationship="masterViewController" id="Uis-3l-OTR"/>
|
||||||
|
</connections>
|
||||||
|
</splitViewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="o1k-3I-tAX" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="-741" y="-1614"/>
|
||||||
|
</scene>
|
||||||
<!--Examples-->
|
<!--Examples-->
|
||||||
<scene sceneID="s0d-6b-0kx">
|
<scene sceneID="s0d-6b-0kx">
|
||||||
<objects>
|
<objects>
|
||||||
@@ -168,12 +237,12 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="1039" y="151"/>
|
<point key="canvasLocation" x="1038" y="25"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Simple Slider View Controller-->
|
<!--Simple Slider View Controller-->
|
||||||
<scene sceneID="Pvx-pO-5XB">
|
<scene sceneID="Pvx-pO-5XB">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="nXP-c2-Cpg" customClass="SimpleSliderViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="Slider Widget" id="nXP-c2-Cpg" customClass="SimpleSliderViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="2zm-EC-beS">
|
<view key="view" contentMode="scaleToFill" id="2zm-EC-beS">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -199,12 +268,12 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="btb-K4-jol" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="btb-K4-jol" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="2771" y="270"/>
|
<point key="canvasLocation" x="7319" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Layout-->
|
<!--Layout-->
|
||||||
<scene sceneID="f8y-qg-uzH">
|
<scene sceneID="f8y-qg-uzH">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="6EP-ej-U9V" customClass="LayoutViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="Layout" id="6EP-ej-U9V" customClass="LayoutViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="ogd-2a-ycI" customClass="LayoutView" customModule="RiveExample" customModuleProvider="target">
|
<view key="view" contentMode="scaleToFill" id="ogd-2a-ycI" customClass="LayoutView" customModule="RiveExample" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -393,12 +462,12 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iPR-UO-vO8" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="iPR-UO-vO8" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="2516" y="-984"/>
|
<point key="canvasLocation" x="3052" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Blend Modes-->
|
<!--Blend Modes-->
|
||||||
<scene sceneID="JXR-CF-wxg">
|
<scene sceneID="JXR-CF-wxg">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="6Y6-o9-aZy" customClass="BlendModeViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="Blend Mode" id="6Y6-o9-aZy" customClass="BlendModeViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="nG9-ag-3SU">
|
<view key="view" contentMode="scaleToFill" id="nG9-ag-3SU">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -409,12 +478,12 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="0JN-k1-xkH" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="0JN-k1-xkH" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="6045" y="-984"/>
|
<point key="canvasLocation" x="6581" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Loop Mode-->
|
<!--Loop Mode-->
|
||||||
<scene sceneID="iqU-00-Krb">
|
<scene sceneID="iqU-00-Krb">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="fGr-bk-Efd" customClass="LoopModeController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="Loop Mode" id="fGr-bk-Efd" customClass="LoopModeController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="PUC-Yj-uP6" customClass="LoopMode" customModule="RiveExample" customModuleProvider="target">
|
<view key="view" contentMode="scaleToFill" id="PUC-Yj-uP6" customClass="LoopMode" customModule="RiveExample" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -637,12 +706,12 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Ozx-fu-trC" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="Ozx-fu-trC" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="3914" y="-984"/>
|
<point key="canvasLocation" x="4449" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--State Machine-->
|
<!--State Machine-->
|
||||||
<scene sceneID="sMa-mk-G4H">
|
<scene sceneID="sMa-mk-G4H">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="tat-Jb-Aap" customClass="StateMachineViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="State Machine" id="tat-Jb-Aap" customClass="StateMachineViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="EmG-VF-nMb" customClass="StateMachineView" customModule="RiveExample" customModuleProvider="target">
|
<view key="view" contentMode="scaleToFill" id="EmG-VF-nMb" customClass="StateMachineView" customModule="RiveExample" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -720,12 +789,12 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="qYD-XH-vp4" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="qYD-XH-vp4" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="4599" y="-984"/>
|
<point key="canvasLocation" x="5135" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--iOS Player-->
|
<!--iOS Player-->
|
||||||
<scene sceneID="8FV-8I-h1w">
|
<scene sceneID="8FV-8I-h1w">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="bLr-Sd-R4P" customClass="IOSPlayerViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="iOS Player" id="bLr-Sd-R4P" customClass="IOSPlayerViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="atc-Qh-uPc" customClass="IOSPlayerView" customModule="RiveExample" customModuleProvider="target">
|
<view key="view" contentMode="scaleToFill" id="atc-Qh-uPc" customClass="IOSPlayerView" customModule="RiveExample" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -803,7 +872,7 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="jt7-3l-j1T" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="jt7-3l-j1T" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="5325" y="-984"/>
|
<point key="canvasLocation" x="5861" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Hosting Controller-->
|
<!--Hosting Controller-->
|
||||||
<scene sceneID="FCb-Pg-8ib">
|
<scene sceneID="FCb-Pg-8ib">
|
||||||
@@ -813,12 +882,12 @@
|
|||||||
</hostingController>
|
</hostingController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="SUL-R1-Glq" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="SUL-R1-Glq" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="138" y="1501"/>
|
<point key="canvasLocation" x="3090" y="356"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Multiple Animations-->
|
<!--Multiple Animations-->
|
||||||
<scene sceneID="RWJ-v9-IHm">
|
<scene sceneID="RWJ-v9-IHm">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="qQy-Yc-tGr" customClass="MultipleAnimationsController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="MultipleAnimations" id="qQy-Yc-tGr" customClass="MultipleAnimationsController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="Vnx-gq-hge" customClass="MultipleAnimations" customModule="RiveExample" customModuleProvider="target">
|
<view key="view" contentMode="scaleToFill" id="Vnx-gq-hge" customClass="MultipleAnimations" customModule="RiveExample" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
@@ -974,12 +1043,12 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Yc7-ml-Tkq" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="Yc7-ml-Tkq" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="3229" y="-984"/>
|
<point key="canvasLocation" x="3765" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Simple Animation Example-->
|
<!--Simple Animation Example-->
|
||||||
<scene sceneID="b8F-wH-PQu">
|
<scene sceneID="b8F-wH-PQu">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController title="Simple Animation Example" id="l4C-BT-Wpi" customClass="SimpleAnimationViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController storyboardIdentifier="Simple Animation" title="Simple Animation Example" id="l4C-BT-Wpi" customClass="SimpleAnimationViewController" customModule="RiveExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="dF4-O8-Npa">
|
<view key="view" contentMode="scaleToFill" id="dF4-O8-Npa">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -990,17 +1059,17 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="xxk-hl-V9T" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="xxk-hl-V9T" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="1842" y="-984"/>
|
<point key="canvasLocation" x="2377" y="-358"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Hosting Controller-->
|
<!--Hosting Controller-->
|
||||||
<scene sceneID="ywB-z0-0QJ">
|
<scene sceneID="ywB-z0-0QJ">
|
||||||
<objects>
|
<objects>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="tzM-Rx-Bel" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
<hostingController id="w39-2n-FCH" sceneMemberID="viewController">
|
<hostingController id="w39-2n-FCH" sceneMemberID="viewController">
|
||||||
<navigationItem key="navigationItem" id="GYU-ku-HRS"/>
|
<navigationItem key="navigationItem" id="GYU-ku-HRS"/>
|
||||||
</hostingController>
|
</hostingController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="tzM-Rx-Bel" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="-664" y="1501"/>
|
<point key="canvasLocation" x="3817" y="356"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Navigation Controller-->
|
<!--Navigation Controller-->
|
||||||
<scene sceneID="Vw7-FC-sqO">
|
<scene sceneID="Vw7-FC-sqO">
|
||||||
@@ -1013,12 +1082,12 @@
|
|||||||
</navigationBar>
|
</navigationBar>
|
||||||
<nil name="viewControllers"/>
|
<nil name="viewControllers"/>
|
||||||
<connections>
|
<connections>
|
||||||
<segue destination="Y6W-OH-hqX" kind="relationship" relationship="rootViewController" id="no0-hV-qek"/>
|
<segue destination="Y6W-OH-hqX" kind="relationship" relationship="rootViewController" id="HkN-b4-uJ2"/>
|
||||||
</connections>
|
</connections>
|
||||||
</navigationController>
|
</navigationController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="EYg-Zx-cpS" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="EYg-Zx-cpS" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="137.68115942028987" y="138.61607142857142"/>
|
<point key="canvasLocation" x="146" y="25"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Hosting Controller-->
|
<!--Hosting Controller-->
|
||||||
<scene sceneID="iwq-aZ-Vk6">
|
<scene sceneID="iwq-aZ-Vk6">
|
||||||
@@ -1028,7 +1097,7 @@
|
|||||||
</hostingController>
|
</hostingController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Wo1-9T-STv" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="Wo1-9T-STv" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="1912" y="847"/>
|
<point key="canvasLocation" x="2378" y="356"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<inferredMetricsTieBreakers>
|
<inferredMetricsTieBreakers>
|
||||||
|
|||||||
@@ -15,60 +15,65 @@ class ExamplesViewController: UIViewController {
|
|||||||
// @IBSegueAction func showRiveExplorer(_ coder: NSCoder) -> UIViewController? {
|
// @IBSegueAction func showRiveExplorer(_ coder: NSCoder) -> UIViewController? {
|
||||||
// return HostingController<RiveExplorer>(coder: coder)
|
// return HostingController<RiveExplorer>(coder: coder)
|
||||||
// }
|
// }
|
||||||
|
//
|
||||||
@IBSegueAction func showRiveComponents(_ coder: NSCoder) -> UIViewController? {
|
// @IBSegueAction func showRiveComponents(_ coder: NSCoder) -> UIViewController? {
|
||||||
return HostingController<RiveComponents>(coder: coder)
|
// return HostingController<RiveComponents>(coder: coder)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@IBSegueAction func showSimpleAnimation(_ coder: NSCoder) -> UIViewController? {
|
// @IBSegueAction func showSimpleAnimation(_ coder: NSCoder) -> UIViewController? {
|
||||||
return HostingController<SwiftSimpleAnimation>(coder: coder)
|
// return HostingController<SwiftSimpleAnimation>(coder: coder)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@IBSegueAction func showLayout(_ coder: NSCoder) -> UIViewController? {
|
// @IBSegueAction func showLayout(_ coder: NSCoder) -> UIViewController? {
|
||||||
return HostingController<SwiftLayout>(coder: coder)
|
// return HostingController<SwiftLayout>(coder: coder)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@IBSegueAction func showMultipleAnimations(_ coder: NSCoder) -> UIViewController? {
|
// @IBSegueAction func showMultipleAnimations(_ coder: NSCoder) -> UIViewController? {
|
||||||
return HostingController<SwiftMultipleAnimations>(coder: coder)
|
// return HostingController<SwiftMultipleAnimations>(coder: coder)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@IBSegueAction func showLoopMode(_ coder: NSCoder) -> UIViewController? {
|
// @IBSegueAction func showLoopMode(_ coder: NSCoder) -> UIViewController? {
|
||||||
return HostingController<SwiftLoopMode>(coder: coder)
|
// return HostingController<SwiftLoopMode>(coder: coder)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@IBSegueAction func showStateMachine(_ coder: NSCoder) -> UIViewController? {
|
// @IBSegueAction func showStateMachine(_ coder: NSCoder) -> UIViewController? {
|
||||||
return HostingController<SwiftStateMachine>(coder: coder)
|
// var foo = SwiftStateMachine.self
|
||||||
}
|
// return HostingController<SwiftStateMachine>(coder: coder)
|
||||||
|
// }
|
||||||
@IBSegueAction func showMeshExample(_ coder: NSCoder) -> UIViewController? {
|
//
|
||||||
return HostingController<SwiftMeshAnimation>(coder: coder)
|
// @IBSegueAction func showMeshExample(_ coder: NSCoder) -> UIViewController? {
|
||||||
}
|
// return HostingController<SwiftMeshAnimation>(coder: coder)
|
||||||
|
// }
|
||||||
@IBAction func showSwiftUISlider(_ sender: Any) {
|
//
|
||||||
let controller = UIHostingController(rootView: RiveSlider().view())
|
// @IBAction func showSwiftUISlider(_ sender: Any) {
|
||||||
navigationController?.pushViewController(controller, animated: true)
|
// let controller = UIHostingController(rootView: RiveSlider().view())
|
||||||
}
|
// navigationController?.pushViewController(controller, animated: true)
|
||||||
|
// }
|
||||||
@IBSegueAction func showUIKitSlider(_ coder: NSCoder) -> SimpleSliderViewController? {
|
//
|
||||||
return SimpleSliderViewController(coder: coder)
|
// @IBSegueAction func showUIKitSlider(_ coder: NSCoder) -> SimpleSliderViewController? {
|
||||||
}
|
// return SimpleSliderViewController(coder: coder)
|
||||||
|
// }
|
||||||
@IBSegueAction func showUIKitMultiAnimations(_ coder: NSCoder) -> MultipleAnimationsController? {
|
//
|
||||||
return MultipleAnimationsController(coder: coder)
|
// @IBSegueAction func showUIKitMultiAnimations(_ coder: NSCoder) -> MultipleAnimationsController? {
|
||||||
}
|
// return MultipleAnimationsController(coder: coder)
|
||||||
}
|
// }
|
||||||
|
|
||||||
fileprivate class HostingController<Content: DismissableView>: UIHostingController<Content> {
|
|
||||||
required init?(coder: NSCoder) {
|
|
||||||
super.init(coder: coder, rootView: Content())
|
|
||||||
rootView.dismiss = {
|
|
||||||
self.dismiss(animated: true, completion: nil)
|
|
||||||
self.navigationController?.popViewController(animated: true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public protocol DismissableView: View {
|
|
||||||
init()
|
|
||||||
var dismiss: () -> Void { get set }
|
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
//class HostingController<Content: DismissableView>: UIHostingController<Content> {
|
||||||
|
// override init(rootView: Content) {
|
||||||
|
// super.init(rootView: rootView)
|
||||||
|
//
|
||||||
|
// self.rootView.dismiss = {
|
||||||
|
// self.dismiss(animated: true, completion: nil)
|
||||||
|
// self.navigationController?.popViewController(animated: true)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// required init?(coder: NSCoder) {
|
||||||
|
// super.init(coder: coder, rootView: Content())
|
||||||
|
// rootView.dismiss = {
|
||||||
|
// self.dismiss(animated: true, completion: nil)
|
||||||
|
// self.navigationController?.popViewController(animated: true)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|||||||
Reference in New Issue
Block a user