Files
firebase-ios-sdk/InAppMessagingDisplay/Example/FiamDisplaySwiftExample/Base.lproj/Main.storyboard
T
christibbs 4a33b267d9 Support card template display in FIAM iOS SDK (#2947)
* Add card scene to storyboard, use IBDesignable rounded corners view

* Use IBdesignable rounded corners view for modal message

* Add card message type

* Parse card message type, add new fields for secondary actions and landscape URLs to view model classes

* Display a really basic card message

* Naive landscape image loading (needs error handling)

* Quick bug fix

* Wire up Display to show cards

* Wire up Display to show cards

* Fix tablet width

* Pick right image for orientation

* Remove placeholder image sizing constraints at build time

* Add more test functionality

* Better image sizes

* Size message image out

* Switch to body text view rather than body label

* Make the body text view scrollable. Set correct text color on button.

* Hook up buttons and text color

* Include action URL in messageClicked callback

* Fix action URL

* Update pod specs

* Update message clicked delegate to pass an action object, not just the actionURL

* Change podspec versions back, hook up background color

* Don't animate scroll to top on scroll view

* Fix text scrolling bug

* Fix portrait and landscape fetching code. Fix background color bug

* Flesh out FIRIAMMessageContentDataWithImageURLTests

* Fix up FIRIAMFetchFlowTests

* Fix up FIRIAMMessageClientCacheTests

* Fix up FIRIAMMessageDisplayForTesting

* Fix fetching in FIRIAMMessageContentDataWithImageURL

* Tests for message parsing

* Fix up view controllers for banner, modal, image only. Add a view controller for testing card

* Add required vertical compression resistance for primary and secondary action button

* Add UI tests for card view controller

* Add back deprecated messageClicked: method, call it if the newer method isn't implemented. Make all display delegate methods optional.

* Run scripts/styles.sh

* Documentation cleanup

* Fix style in FIRIAMMessageContentDataWithImageURLTests.m

* Add missing copyright notices

* Bump versions of both FIAM SDKS

* Remove default.profraw

* Address some logging punctuation nits. Cancel landscape image load if portrait image load fails.

* Add missing error flow in image fetch. A few comment nits.

* Shorten up init method for CardDisplayMessage

* Documentation updates

* Deintegrate cocoa pods

* Include landscape image data in test image load class

* Fix Swift naming for InAppMessagingAction in UItests

* Remove card message initializer from public API, place into a private header

* Mark some properties on the card object as readonly that should've been already, Find a way to initialize a card message in the UI tests.

* Bump dependency on InAppMessaging given changes

* Bump versions in podspecs for both SDKs

* Make all view model properties for message subclasses readonly

* Revert changes to other message subclasses

* Make card view model properties readonly

* Run styles.sh
2019-05-24 18:31:16 -04:00

459 lines
45 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="3pN-pw-EY2">
<device id="retina5_5" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Banner Messages-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="BannerMessageViewController" customModule="FiamDisplaySwiftExample" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="1sp-53-Fq2">
<rect key="frame" x="0.0" y="20" width="414" height="667"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Verification Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IdT-2g-OHS">
<rect key="frame" x="0.0" y="0.0" width="414" height="95.333333333333329"/>
<accessibility key="accessibilityConfiguration" identifier="verification-label-banner"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tuR-ox-JKe">
<rect key="frame" x="0.0" y="95.333333333333343" width="414" height="95.333333333333343"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Show Regular Banner View"/>
<connections>
<action selector="showRegularBannerTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="0Lv-Md-RGu"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OdV-sK-hN2">
<rect key="frame" x="0.0" y="190.66666666666666" width="414" height="95.333333333333343"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Without Image"/>
<connections>
<action selector="showBannerViewWithoutImageTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="HRI-rM-P77"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eqR-qV-6QA">
<rect key="frame" x="0.0" y="286" width="414" height="95"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="With Wide Image"/>
<connections>
<action selector="showBannerViewWithWideImageTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="vWg-y6-usw"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5lo-cz-mMm">
<rect key="frame" x="0.0" y="381" width="414" height="95.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="With Thin Image"/>
<connections>
<action selector="showBannerViewWithNarrowImageTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="GMU-k5-ECE"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gvO-6a-zu2">
<rect key="frame" x="0.0" y="476.33333333333331" width="414" height="95.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="With Large Body Text"/>
<connections>
<action selector="showBannerViewWithLargeBodyTextTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="c7d-hN-EnM"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZhT-VP-zCp">
<rect key="frame" x="0.0" y="571.66666666666663" width="414" height="95.333333333333371"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="With Long Title"/>
<connections>
<action selector="showBannerViewWithLongTitleTextTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="nKO-LN-iNn"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="1sp-53-Fq2" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" id="5cV-mf-DA3"/>
<constraint firstItem="1sp-53-Fq2" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="Klu-61-G0K"/>
<constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="1sp-53-Fq2" secondAttribute="bottom" id="m8X-BL-WyI"/>
<constraint firstItem="1sp-53-Fq2" firstAttribute="width" secondItem="8bC-Xf-vdC" secondAttribute="width" id="qI1-dX-8ui"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Banner Messages" id="lmF-KU-1Kz"/>
<connections>
<outlet property="verifyLabel" destination="IdT-2g-OHS" id="8M6-6a-FCQ"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="912.22826086956525" y="95.652173913043484"/>
</scene>
<!--Modal Messages-->
<scene sceneID="1TO-S8-SV0">
<objects>
<viewController id="ttC-lg-4V1" customClass="ModalMessageViewController" customModule="FiamDisplaySwiftExample" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="09s-Er-Yft"/>
<viewControllerLayoutGuide type="bottom" id="Vu8-In-JUX"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="hES-vq-3sa">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="9Ui-uS-L7z">
<rect key="frame" x="0.0" y="20" width="414" height="667"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Verification Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PaF-mG-SKa">
<rect key="frame" x="0.0" y="0.0" width="414" height="55.666666666666664"/>
<accessibility key="accessibilityConfiguration" identifier="verification-label-modal"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9iR-Xj-FUj">
<rect key="frame" x="0.0" y="55.666666666666671" width="414" height="55.666666666666671"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="Regular"/>
<connections>
<action selector="showRegular:" destination="ttC-lg-4V1" eventType="touchUpInside" id="XB1-eN-Dxj"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pcE-sH-wZt">
<rect key="frame" x="0.0" y="111.33333333333333" width="414" height="55.333333333333329"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="Without Image"/>
<connections>
<action selector="showWithoutImage:" destination="ttC-lg-4V1" eventType="touchUpInside" id="ZJB-U8-XWp"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9k0-UI-Puj">
<rect key="frame" x="0.0" y="166.66666666666666" width="414" height="55.666666666666657"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="Without Action Button"/>
<connections>
<action selector="showWithoutButton:" destination="ttC-lg-4V1" eventType="touchUpInside" id="8t6-t5-tFf"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2z0-64-rZk">
<rect key="frame" x="0.0" y="222.33333333333334" width="414" height="55.666666666666657"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="Wthout Image or Action Button"/>
<connections>
<action selector="showWithoutImageAndButton:" destination="ttC-lg-4V1" eventType="touchUpInside" id="Sob-M5-UjN"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8kw-uD-YSC">
<rect key="frame" x="0.0" y="278" width="414" height="55.666666666666686"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="Large Body Text"/>
<connections>
<action selector="showWithLargeBody:" destination="ttC-lg-4V1" eventType="touchUpInside" id="zSU-aM-eV8"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="z3a-46-Bju">
<rect key="frame" x="0.0" y="333.66666666666669" width="414" height="55.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="With Large Title and Body"/>
<connections>
<action selector="showWithLargeTitleAndBody:" destination="ttC-lg-4V1" eventType="touchUpInside" id="GpZ-Ch-lJf"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j3k-tM-eGm">
<rect key="frame" x="0.0" y="389" width="414" height="55.666666666666686"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="Large Title Text"/>
<connections>
<action selector="showWithLargeTitle:" destination="ttC-lg-4V1" eventType="touchUpInside" id="38U-Wq-hKm"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iWk-4F-kna">
<rect key="frame" x="0.0" y="444.66666666666669" width="414" height="55.666666666666686"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="With Large Title and Body Without Image"/>
<connections>
<action selector="showWithLargeTitleAndBodyWithoutImage:" destination="ttC-lg-4V1" eventType="touchUpInside" id="rEV-RD-evh"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1rD-Fa-6dO">
<rect key="frame" x="0.0" y="500.33333333333343" width="414" height="55.666666666666686"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<state key="normal" title="With Large Title, No Image, No Body and No Button"/>
<connections>
<action selector="showWithLargeTitleWithoutBodyWithoutImageWithoutButton:" destination="ttC-lg-4V1" eventType="touchUpInside" id="vqK-6n-Jb1"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kMO-Q0-pYH">
<rect key="frame" x="0.0" y="556" width="414" height="55.333333333333371"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<state key="normal" title="Wide Image"/>
<connections>
<action selector="showWithWideImage:" destination="ttC-lg-4V1" eventType="touchUpInside" id="tOI-8R-sTB"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dc6-6u-d3T">
<rect key="frame" x="0.0" y="611.33333333333337" width="414" height="55.666666666666629"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<state key="normal" title="Thin Image"/>
<connections>
<action selector="showWithThinImage:" destination="ttC-lg-4V1" eventType="touchUpInside" id="whs-EW-I4T"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="Vu8-In-JUX" firstAttribute="top" secondItem="9Ui-uS-L7z" secondAttribute="bottom" id="B1P-Yu-WC8"/>
<constraint firstItem="9Ui-uS-L7z" firstAttribute="centerX" secondItem="hES-vq-3sa" secondAttribute="centerX" id="G30-2I-9CC"/>
<constraint firstItem="9Ui-uS-L7z" firstAttribute="width" secondItem="hES-vq-3sa" secondAttribute="width" id="o1m-mS-rrp"/>
<constraint firstItem="9Ui-uS-L7z" firstAttribute="top" secondItem="09s-Er-Yft" secondAttribute="bottom" id="vwb-Bs-qWi"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Modal Messages" id="bHQ-TR-Bdx"/>
<connections>
<outlet property="verifyLabel" destination="PaF-mG-SKa" id="7LE-kU-qxT"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="NrN-aK-e3o" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="701" y="988"/>
</scene>
<!--Image Only Messages-->
<scene sceneID="HXM-v0-E4s">
<objects>
<viewController id="3X5-S5-3oo" customClass="ImageOnlyMessageViewController" customModule="FiamDisplaySwiftExample" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="13a-L7-BOa"/>
<viewControllerLayoutGuide type="bottom" id="zAY-eT-fg9"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="xfK-2M-H3U">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="38M-yp-03l">
<rect key="frame" x="0.0" y="20" width="414" height="667"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Verification Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dlu-T5-GYf">
<rect key="frame" x="0.0" y="0.0" width="414" height="111.33333333333333"/>
<accessibility key="accessibilityConfiguration" identifier="verification-label-image-only"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9ar-mi-FoK">
<rect key="frame" x="0.0" y="111.33333333333334" width="414" height="111"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Show Regular Image Only View"/>
<connections>
<action selector="showRegularImageOnlyTapped:" destination="3X5-S5-3oo" eventType="touchUpInside" id="APA-1d-Y5W"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UZp-Pk-0ed">
<rect key="frame" x="0.0" y="222.33333333333334" width="414" height="111.33333333333334"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="High Dimension Image"/>
<connections>
<action selector="showBannerViewWithNarrowImageTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="PLo-vX-TLK"/>
<action selector="showImageViewWithLargeImageDimensionTapped:" destination="3X5-S5-3oo" eventType="touchUpInside" id="HLn-KU-CF0"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mXn-l2-D6C">
<rect key="frame" x="0.0" y="333.66666666666669" width="414" height="111"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Low Dimension Image"/>
<connections>
<action selector="showBannerViewWithLargeBodyTextTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="wRK-nw-dTf"/>
<action selector="showImageViewWithSmallImageDimensionTapped:" destination="3X5-S5-3oo" eventType="touchUpInside" id="msb-HF-l1Q"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fDd-Wu-yBe">
<rect key="frame" x="0.0" y="444.66666666666669" width="414" height="111.33333333333331"/>
<state key="normal" title="Wide Image"/>
<connections>
<action selector="showImageViewWithWideImage:" destination="3X5-S5-3oo" eventType="touchUpInside" id="Ugg-Pg-sj9"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6jV-cV-4wX">
<rect key="frame" x="0.0" y="556" width="414" height="111"/>
<state key="normal" title="Narrow Image"/>
<connections>
<action selector="showImageViewWithNarrowImage:" destination="3X5-S5-3oo" eventType="touchUpInside" id="Vrk-pH-OXv"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="38M-yp-03l" firstAttribute="centerX" secondItem="xfK-2M-H3U" secondAttribute="centerX" id="9mP-ix-nl8"/>
<constraint firstItem="zAY-eT-fg9" firstAttribute="top" secondItem="38M-yp-03l" secondAttribute="bottom" id="UE4-hL-iKs"/>
<constraint firstItem="38M-yp-03l" firstAttribute="top" secondItem="13a-L7-BOa" secondAttribute="bottom" id="b6G-fN-c25"/>
<constraint firstItem="38M-yp-03l" firstAttribute="width" secondItem="xfK-2M-H3U" secondAttribute="width" id="vGo-e5-3CT"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Image Only Messages" id="dqq-9B-dai"/>
<connections>
<outlet property="verifyLabel" destination="Dlu-T5-GYf" id="ztW-DT-gd4"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="fvj-p2-57e" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1437" y="861"/>
</scene>
<!--Tab Bar Controller-->
<scene sceneID="tPF-Vb-3VY">
<objects>
<tabBarController automaticallyAdjustsScrollViewInsets="NO" id="3pN-pw-EY2" sceneMemberID="viewController">
<toolbarItems/>
<tabBar key="tabBar" contentMode="scaleToFill" id="i66-KK-YQT">
<rect key="frame" x="0.0" y="0.0" width="1000" height="1000"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tabBar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="viewControllers" id="vjd-Pj-odJ"/>
<segue destination="ttC-lg-4V1" kind="relationship" relationship="viewControllers" id="KIt-l5-XTe"/>
<segue destination="3X5-S5-3oo" kind="relationship" relationship="viewControllers" id="c5a-QK-OKw"/>
<segue destination="7qp-KF-emt" kind="relationship" relationship="viewControllers" id="5Za-CI-fkn"/>
</connections>
</tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="kJN-c1-1dl" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="139.4021739130435" y="95.652173913043484"/>
</scene>
<!--Card Messages-->
<scene sceneID="lTf-2W-Yrp">
<objects>
<viewController id="7qp-KF-emt" userLabel="Card Messages" customClass="CardMessageViewController" customModule="FiamDisplaySwiftExample" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="A8k-VD-CtE"/>
<viewControllerLayoutGuide type="bottom" id="X2N-2U-Eje"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="CBW-Xw-spg">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="hgf-QM-eOg">
<rect key="frame" x="0.0" y="20" width="414" height="667"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Verification Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ts8-L7-y9b">
<rect key="frame" x="0.0" y="0.0" width="414" height="60.666666666666664"/>
<accessibility key="accessibilityConfiguration" identifier="verification-label-modal"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ITc-lu-jBW">
<rect key="frame" x="0.0" y="60.666666666666671" width="414" height="60.666666666666671"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Regular one button with both images"/>
<connections>
<action selector="showRegularOneButtonWithBothImages:" destination="7qp-KF-emt" eventType="touchUpInside" id="m1b-WU-v3c"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uh3-CP-JX6">
<rect key="frame" x="0.0" y="121.33333333333336" width="414" height="60.666666666666671"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Regular one button with only portrait"/>
<connections>
<action selector="showRegularOneButtonWithOnlyPortrait:" destination="7qp-KF-emt" eventType="touchUpInside" id="7dE-hx-ore"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="53O-2p-NBb">
<rect key="frame" x="0.0" y="182" width="414" height="60.666666666666657"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Regular two button with both images"/>
<connections>
<action selector="showRegularTwoButtonWithBothImages:" destination="7qp-KF-emt" eventType="touchUpInside" id="krV-Vm-XIf"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bCB-C4-2Bj">
<rect key="frame" x="0.0" y="242.66666666666666" width="414" height="60.666666666666657"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Long title, regular body"/>
<connections>
<action selector="showLongTitleRegularBody:" destination="7qp-KF-emt" eventType="touchUpInside" id="JO8-zm-m3G"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YrK-32-aYS">
<rect key="frame" x="0.0" y="303.33333333333331" width="414" height="60.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Regular title, long body"/>
<connections>
<action selector="showRegularTitleLongBody:" destination="7qp-KF-emt" eventType="touchUpInside" id="1lG-Xj-Hrw"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="laT-wO-h0Z" userLabel="Long title, no body">
<rect key="frame" x="0.0" y="363.66666666666669" width="414" height="60.666666666666686"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Long title, no body"/>
<connections>
<action selector="showLongTitleNoBody:" destination="7qp-KF-emt" eventType="touchUpInside" id="UqB-Q6-P8i"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="v9U-qY-dzC" userLabel="Long primary button">
<rect key="frame" x="0.0" y="424.33333333333331" width="414" height="60.666666666666686"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Long primary button"/>
<connections>
<action selector="showLongPrimaryButton:" destination="7qp-KF-emt" eventType="touchUpInside" id="KW4-xc-ZrH"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HdA-GX-M5B" userLabel="Long secondary button">
<rect key="frame" x="0.0" y="485.00000000000006" width="414" height="60.666666666666686"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Long secondary button"/>
<connections>
<action selector="showLongSecondaryButton:" destination="7qp-KF-emt" eventType="touchUpInside" id="I5c-LV-kU6"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eUX-UK-ok3" userLabel="Small image">
<rect key="frame" x="0.0" y="545.66666666666663" width="414" height="60.666666666666629"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Small image"/>
<connections>
<action selector="showSmallImage:" destination="7qp-KF-emt" eventType="touchUpInside" id="dKq-vz-yQB"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pNm-hO-edm" userLabel="Huge image">
<rect key="frame" x="0.0" y="606.33333333333337" width="414" height="60.666666666666629"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="Huge image"/>
<connections>
<action selector="showHugeImage:" destination="7qp-KF-emt" eventType="touchUpInside" id="DHB-0d-A6H"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="X2N-2U-Eje" firstAttribute="top" secondItem="hgf-QM-eOg" secondAttribute="bottom" id="3Uf-aa-woV"/>
<constraint firstItem="hgf-QM-eOg" firstAttribute="centerX" secondItem="CBW-Xw-spg" secondAttribute="centerX" id="8Ti-Ml-l6D"/>
<constraint firstItem="hgf-QM-eOg" firstAttribute="top" secondItem="A8k-VD-CtE" secondAttribute="bottom" id="YT5-j4-b8g"/>
<constraint firstItem="hgf-QM-eOg" firstAttribute="width" secondItem="CBW-Xw-spg" secondAttribute="width" id="Zui-ty-Day"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="Card Messages" id="ojf-YC-btZ"/>
<connections>
<outlet property="verifyLabel" destination="ts8-L7-y9b" id="6Dm-Fi-dhQ"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="W6A-nN-JfC" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1733" y="95"/>
</scene>
</scenes>
</document>