mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-19 16:13:42 +02:00
MESSENGER-2762 Initial Merge
This commit is contained in:
@@ -1,354 +1,358 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="V8j-Lb-PgC">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="AdB-e5-Xbz">
|
||||
<device id="retina5_9" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Enter Pin Code View Controller-->
|
||||
<scene sceneID="mt5-wz-YKA">
|
||||
<scene sceneID="8pW-TW-WWh">
|
||||
<objects>
|
||||
<viewController extendedLayoutIncludesOpaqueBars="YES" automaticallyAdjustsScrollViewInsets="NO" id="V8j-Lb-PgC" customClass="EnterPinCodeViewController" customModule="Riot" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="EL9-GA-lwo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<viewController extendedLayoutIncludesOpaqueBars="YES" automaticallyAdjustsScrollViewInsets="NO" id="AdB-e5-Xbz" customClass="EnterPinCodeViewController" customModule="Riot" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="pcv-uC-hzc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1YE-D1-eHn">
|
||||
<rect key="frame" x="0.0" y="20" width="375" height="627"/>
|
||||
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2C5-9h-WBh">
|
||||
<rect key="frame" x="0.0" y="64" width="375" height="694"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="app_symbol" translatesAutoresizingMaskIntoConstraints="NO" id="8qz-Yk-9a4">
|
||||
<rect key="frame" x="137.5" y="243.5" width="100" height="100"/>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="callkit_icon" translatesAutoresizingMaskIntoConstraints="NO" id="a9H-du-3Ut">
|
||||
<rect key="frame" x="137.66666666666666" y="277" width="100" height="100"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="100" id="Ux9-pH-SW9"/>
|
||||
<constraint firstAttribute="height" constant="100" id="o3K-YH-5tn"/>
|
||||
<constraint firstAttribute="height" constant="100" id="Vtd-ot-Whs"/>
|
||||
<constraint firstAttribute="width" constant="100" id="neB-pG-djO"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="8qz-Yk-9a4" firstAttribute="centerY" secondItem="1YE-D1-eHn" secondAttribute="centerY" constant="-20" id="IKY-me-86i"/>
|
||||
<constraint firstItem="8qz-Yk-9a4" firstAttribute="centerX" secondItem="1YE-D1-eHn" secondAttribute="centerX" id="cPb-3H-3yK"/>
|
||||
<constraint firstItem="a9H-du-3Ut" firstAttribute="centerY" secondItem="2C5-9h-WBh" secondAttribute="centerY" constant="-20" id="4w6-Ka-MA0"/>
|
||||
<constraint firstItem="a9H-du-3Ut" firstAttribute="centerX" secondItem="2C5-9h-WBh" secondAttribute="centerX" id="cKn-Ta-6Aj"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" alignment="center" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="DMT-DS-IA8">
|
||||
<rect key="frame" x="0.0" y="8" width="375" height="651"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" alignment="center" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="ijj-tP-TWa">
|
||||
<rect key="frame" x="0.0" y="52" width="375" height="718"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" image="app_symbol" translatesAutoresizingMaskIntoConstraints="NO" id="UHg-qE-anw">
|
||||
<rect key="frame" x="167.5" y="0.0" width="40" height="40"/>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" image="callkit_icon" translatesAutoresizingMaskIntoConstraints="NO" id="dYQ-6D-LIv">
|
||||
<rect key="frame" x="167.66666666666666" y="0.0" width="40" height="40"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="5If-kl-LuA"/>
|
||||
<constraint firstAttribute="width" constant="40" id="EK6-ed-26b"/>
|
||||
<constraint firstAttribute="height" constant="40" id="IIc-aG-P5U"/>
|
||||
<constraint firstAttribute="width" constant="40" id="yLU-gr-Vqn"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="Welcome back.Choose a PIN for security" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bxI-mu-qng">
|
||||
<rect key="frame" x="16" y="59" width="343" height="53"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="Welcome back.Choose a PIN for security" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P02-LU-aJg">
|
||||
<rect key="frame" x="16" y="70.333333333333329" width="343" height="52.666666666666671"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="22"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rn2-qe-htS">
|
||||
<rect key="frame" x="16" y="131.5" width="343" height="54"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vP5-71-7ne">
|
||||
<rect key="frame" x="16" y="153.33333333333334" width="343" height="54"/>
|
||||
<string key="text">Setting up a PIN lets you protect data like messages and contacts, so only you can access them by entering the PIN at the start of the app.</string>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="l5x-qO-sdf">
|
||||
<rect key="frame" x="2" y="204.5" width="371" height="79"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Dh9-xJ-vo2">
|
||||
<rect key="frame" x="2" y="238" width="371" height="79"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="24" translatesAutoresizingMaskIntoConstraints="NO" id="xi9-P9-8WP">
|
||||
<rect key="frame" x="101.5" y="0.0" width="168" height="24"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="24" translatesAutoresizingMaskIntoConstraints="NO" id="fj9-IE-pSQ">
|
||||
<rect key="frame" x="101.66666666666669" y="0.0" width="168" height="24"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="Gwx-8X-ZWk">
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="kgZ-eU-4vi">
|
||||
<rect key="frame" x="0.0" y="0.0" width="24" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="24" id="aek-t8-dK4"/>
|
||||
<constraint firstAttribute="width" constant="24" id="cJN-ZQ-6aQ"/>
|
||||
<constraint firstAttribute="height" constant="24" id="BMA-ib-68l"/>
|
||||
<constraint firstAttribute="width" constant="24" id="dXQ-sz-phd"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="qDY-R1-l5l">
|
||||
<rect key="frame" x="48" y="0.0" width="24" height="24"/>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="KP0-pu-QoV">
|
||||
<rect key="frame" x="47.999999999999986" y="0.0" width="24" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="24" id="QDg-LP-R4J"/>
|
||||
<constraint firstAttribute="height" constant="24" id="f4G-d8-hoA"/>
|
||||
<constraint firstAttribute="width" constant="24" id="Gvq-He-FDA"/>
|
||||
<constraint firstAttribute="height" constant="24" id="eFj-BL-PHT"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="X0l-q3-fXm">
|
||||
<rect key="frame" x="96" y="0.0" width="24" height="24"/>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="9fv-sI-MDc">
|
||||
<rect key="frame" x="95.999999999999986" y="0.0" width="24" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="24" id="HQA-9R-8bC"/>
|
||||
<constraint firstAttribute="height" constant="24" id="Zjd-RW-DiW"/>
|
||||
<constraint firstAttribute="width" constant="24" id="4w6-Pp-pAw"/>
|
||||
<constraint firstAttribute="height" constant="24" id="fI8-PY-oSh"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="3" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="o1F-px-ZT5">
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" tag="3" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="selection_untick" translatesAutoresizingMaskIntoConstraints="NO" id="gR3-zu-B3I">
|
||||
<rect key="frame" x="144" y="0.0" width="24" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="24" id="FA6-QR-ld2"/>
|
||||
<constraint firstAttribute="width" constant="24" id="TcR-MF-wE3"/>
|
||||
<constraint firstAttribute="width" constant="24" id="Auj-zb-Dfw"/>
|
||||
<constraint firstAttribute="height" constant="24" id="War-av-znh"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CBc-7Z-a5Z">
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eVt-IS-UTE">
|
||||
<rect key="frame" x="0.0" y="24" width="371" height="55"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Q0w-RD-JD3">
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PaC-DW-0rz">
|
||||
<rect key="frame" x="0.0" y="8" width="371" height="2"/>
|
||||
<color key="backgroundColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="backgroundColor" systemColor="systemRedColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="2" id="thx-rI-kOC"/>
|
||||
<constraint firstAttribute="height" constant="2" id="mWl-i8-Lu7"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="For security reasons, this PIN isn't available. Please try another PIN" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H5g-FI-xEj">
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="For security reasons, this PIN isn't available. Please try another PIN" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="da8-CR-YzN">
|
||||
<rect key="frame" x="8" y="18" width="355" height="29"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="textColor" systemColor="systemRedColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="H5g-FI-xEj" firstAttribute="top" secondItem="Q0w-RD-JD3" secondAttribute="bottom" constant="8" id="Ass-T4-TrH"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Q0w-RD-JD3" secondAttribute="trailing" id="KBv-AB-wkc"/>
|
||||
<constraint firstAttribute="trailing" secondItem="H5g-FI-xEj" secondAttribute="trailing" constant="8" id="SK3-JE-bIK"/>
|
||||
<constraint firstItem="Q0w-RD-JD3" firstAttribute="leading" secondItem="CBc-7Z-a5Z" secondAttribute="leading" id="ZwL-3A-TND"/>
|
||||
<constraint firstItem="Q0w-RD-JD3" firstAttribute="top" secondItem="CBc-7Z-a5Z" secondAttribute="top" constant="8" id="fgi-r2-9bD"/>
|
||||
<constraint firstItem="H5g-FI-xEj" firstAttribute="leading" secondItem="CBc-7Z-a5Z" secondAttribute="leading" constant="8" id="idG-Mm-XPq"/>
|
||||
<constraint firstAttribute="bottom" secondItem="H5g-FI-xEj" secondAttribute="bottom" constant="8" id="xhM-lP-67t"/>
|
||||
<constraint firstAttribute="trailing" secondItem="da8-CR-YzN" secondAttribute="trailing" constant="8" id="2ey-LQ-ixb"/>
|
||||
<constraint firstItem="PaC-DW-0rz" firstAttribute="top" secondItem="eVt-IS-UTE" secondAttribute="top" constant="8" id="5cF-cF-r1D"/>
|
||||
<constraint firstAttribute="bottom" secondItem="da8-CR-YzN" secondAttribute="bottom" constant="8" id="6yz-HE-VYJ"/>
|
||||
<constraint firstItem="PaC-DW-0rz" firstAttribute="leading" secondItem="eVt-IS-UTE" secondAttribute="leading" id="gjt-2e-7YD"/>
|
||||
<constraint firstAttribute="trailing" secondItem="PaC-DW-0rz" secondAttribute="trailing" id="me7-eF-BaI"/>
|
||||
<constraint firstItem="da8-CR-YzN" firstAttribute="leading" secondItem="eVt-IS-UTE" secondAttribute="leading" constant="8" id="vcH-2w-cUG"/>
|
||||
<constraint firstItem="da8-CR-YzN" firstAttribute="top" secondItem="PaC-DW-0rz" secondAttribute="bottom" constant="8" id="wE8-0k-7Oa"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" alignment="center" spacing="12" translatesAutoresizingMaskIntoConstraints="NO" id="W0M-eq-abZ">
|
||||
<rect key="frame" x="77.5" y="302.5" width="220" height="276"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" alignment="center" spacing="12" translatesAutoresizingMaskIntoConstraints="NO" id="5Ek-SS-9WZ">
|
||||
<rect key="frame" x="77.666666666666686" y="347.33333333333331" width="220" height="275.99999999999994"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Uqh-o2-7HP">
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="AjR-nP-uYH">
|
||||
<rect key="frame" x="0.0" y="0.0" width="220" height="60"/>
|
||||
<subviews>
|
||||
<button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BEe-II-qt8">
|
||||
<button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="78K-OY-C0X">
|
||||
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="HSC-fC-0mb"/>
|
||||
<constraint firstAttribute="height" constant="60" id="UsP-qt-rq1"/>
|
||||
<constraint firstAttribute="width" constant="60" id="3HV-ab-JKB"/>
|
||||
<constraint firstAttribute="height" constant="60" id="xsp-hI-i7r"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="1"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="bJg-z4-FSc"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="1nS-w1-21C"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vRL-nn-bIH">
|
||||
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
|
||||
<button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2u3-sb-V4Q">
|
||||
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="60" id="HaJ-0E-bl3"/>
|
||||
<constraint firstAttribute="width" constant="60" id="JJz-zL-t77"/>
|
||||
<constraint firstAttribute="width" constant="60" id="iAP-5G-liC"/>
|
||||
<constraint firstAttribute="height" constant="60" id="lxA-13-mpH"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="2"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="jWB-aT-7CT"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="a3K-KP-Xkr"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m5E-4b-a2B">
|
||||
<button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="akC-9K-A6S">
|
||||
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="60" id="9Uy-xG-5Vq"/>
|
||||
<constraint firstAttribute="width" constant="60" id="EZw-k5-DP8"/>
|
||||
<constraint firstAttribute="height" constant="60" id="JE1-jE-yaU"/>
|
||||
<constraint firstAttribute="width" constant="60" id="RAi-8T-wrd"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="3"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="yNt-BA-OvG"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="dlb-gg-6BK"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Z9D-6N-neq">
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="DsI-FY-Zw6">
|
||||
<rect key="frame" x="0.0" y="72" width="220" height="60"/>
|
||||
<subviews>
|
||||
<button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q2U-ek-vSc">
|
||||
<button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rnh-UG-sal">
|
||||
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="G0j-6T-fRk"/>
|
||||
<constraint firstAttribute="height" constant="60" id="JhY-SW-MMe"/>
|
||||
<constraint firstAttribute="height" constant="60" id="4Cv-iv-R57"/>
|
||||
<constraint firstAttribute="width" constant="60" id="5PZ-f7-vxq"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="4"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="aHq-oD-jeB"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="3gj-Cn-NDm"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ziv-SY-nXQ">
|
||||
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
|
||||
<button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NU9-Sc-W4F">
|
||||
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="5Ry-eq-V0D"/>
|
||||
<constraint firstAttribute="height" constant="60" id="iCm-G8-2Us"/>
|
||||
<constraint firstAttribute="height" constant="60" id="gRF-KA-ZOe"/>
|
||||
<constraint firstAttribute="width" constant="60" id="pMx-nu-gEh"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="5"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="t2w-kA-5Ej"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="JMq-lf-7rS"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PNU-iI-oCX">
|
||||
<button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2NR-Jr-WY3">
|
||||
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="odD-FC-4eB"/>
|
||||
<constraint firstAttribute="height" constant="60" id="zHt-bd-Jwg"/>
|
||||
<constraint firstAttribute="height" constant="60" id="JJf-Uy-Gyd"/>
|
||||
<constraint firstAttribute="width" constant="60" id="NL8-Zb-19Z"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="6"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="q9A-aO-qvf"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="Azs-88-d5i"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="YeU-UN-Uo0">
|
||||
<rect key="frame" x="0.0" y="144" width="220" height="60"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="s7S-CK-dxx">
|
||||
<rect key="frame" x="0.0" y="144.00000000000006" width="220" height="60"/>
|
||||
<subviews>
|
||||
<button opaque="NO" tag="7" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Lnz-5u-oFb">
|
||||
<button opaque="NO" tag="7" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nh4-gD-vTM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="Ye8-5w-NMv"/>
|
||||
<constraint firstAttribute="height" constant="60" id="lPa-Qd-zDM"/>
|
||||
<constraint firstAttribute="height" constant="60" id="Dkf-Sa-fdb"/>
|
||||
<constraint firstAttribute="width" constant="60" id="wvt-Xe-Pbq"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="7"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="i3U-c4-Cp9"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="q7N-xQ-T84"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="8" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OCE-R0-CMN">
|
||||
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
|
||||
<button opaque="NO" tag="8" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="h8m-8D-UUY">
|
||||
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="5LE-yh-yoi"/>
|
||||
<constraint firstAttribute="height" constant="60" id="65e-mr-hid"/>
|
||||
<constraint firstAttribute="width" constant="60" id="G3f-Hj-q1t"/>
|
||||
<constraint firstAttribute="height" constant="60" id="RZ2-vh-vPE"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="8"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="wpv-qG-N2w"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="Yr2-xn-lht"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="9" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1dz-Qd-zCl">
|
||||
<button opaque="NO" tag="9" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Zh-zo-u55">
|
||||
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="rS1-XX-Xw9"/>
|
||||
<constraint firstAttribute="height" constant="60" id="zza-iD-Oue"/>
|
||||
<constraint firstAttribute="width" constant="60" id="NGe-fS-DDY"/>
|
||||
<constraint firstAttribute="height" constant="60" id="Rml-7e-ETR"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="9"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="tTD-CN-iVS"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="Zua-xx-ssE"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Nrp-tS-u1k">
|
||||
<rect key="frame" x="0.0" y="216" width="220" height="60"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="NFx-bW-9f2">
|
||||
<rect key="frame" x="0.0" y="216.00000000000006" width="220" height="60"/>
|
||||
<subviews>
|
||||
<button opaque="NO" userInteractionEnabled="NO" tag="-99" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DEv-rc-fGB">
|
||||
<button opaque="NO" userInteractionEnabled="NO" tag="-99" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PwK-W5-bnP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="fVd-IS-maA"/>
|
||||
<constraint firstAttribute="height" constant="60" id="x1Z-Ar-22U"/>
|
||||
<constraint firstAttribute="width" constant="60" id="SVI-mJ-adg"/>
|
||||
<constraint firstAttribute="height" constant="60" id="ieC-9A-CKt"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sc1-u3-yvh">
|
||||
<rect key="frame" x="80" y="0.0" width="60" height="60"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z3I-Kq-kI0">
|
||||
<rect key="frame" x="79.999999999999986" y="0.0" width="60.000000000000014" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="60" id="DDy-yf-FOR"/>
|
||||
<constraint firstAttribute="width" constant="60" id="vSL-tm-biX"/>
|
||||
<constraint firstAttribute="width" constant="60" id="T11-lW-w7V"/>
|
||||
<constraint firstAttribute="height" constant="60" id="tLT-3h-t6n"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" title="0"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="9nh-0D-5vB"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="KIB-eh-NHn"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="-1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LpO-9j-dlN">
|
||||
<button opaque="NO" tag="-1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yUt-tN-2gL">
|
||||
<rect key="frame" x="160" y="0.0" width="60" height="60"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="DAY-CR-kKO"/>
|
||||
<constraint firstAttribute="height" constant="60" id="iDt-BW-fEz"/>
|
||||
<constraint firstAttribute="height" constant="60" id="fGF-OO-gHY"/>
|
||||
<constraint firstAttribute="width" constant="60" id="yVB-ui-IWP"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/>
|
||||
<state key="normal" image="back_icon"/>
|
||||
<connections>
|
||||
<action selector="digitButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="CVc-4x-WXb"/>
|
||||
<action selector="digitButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="rIj-fJ-frg"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</stackView>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CRt-Fb-0Dq">
|
||||
<rect key="frame" x="146.5" y="598" width="82" height="33"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TMg-AX-OiC">
|
||||
<rect key="frame" x="146.66666666666666" y="653.66666666666663" width="82" height="33"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<state key="normal" title="Forgot PIN"/>
|
||||
<connections>
|
||||
<action selector="forgotPinButtonAction:" destination="V8j-Lb-PgC" eventType="touchUpInside" id="hE4-CJ-Bdh"/>
|
||||
<action selector="forgotPinButtonAction:" destination="AdB-e5-Xbz" eventType="touchUpInside" id="UzX-Z9-Sd8"/>
|
||||
</connections>
|
||||
</button>
|
||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="N9V-f7-d5k">
|
||||
<rect key="frame" x="67.5" y="650" width="240" height="1"/>
|
||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a0M-Zw-56s">
|
||||
<rect key="frame" x="67.666666666666686" y="717" width="240" height="1"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="oFX-h1-fx7"/>
|
||||
<constraint firstAttribute="height" constant="1" id="gT3-E7-D21"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="Rn2-qe-htS" secondAttribute="trailing" constant="16" id="WIb-QJ-vx7"/>
|
||||
<constraint firstItem="bxI-mu-qng" firstAttribute="leading" secondItem="DMT-DS-IA8" secondAttribute="leading" constant="16" id="cg2-vW-LtI"/>
|
||||
<constraint firstAttribute="trailing" secondItem="bxI-mu-qng" secondAttribute="trailing" constant="16" id="j5H-f5-nqY"/>
|
||||
<constraint firstItem="Rn2-qe-htS" firstAttribute="leading" secondItem="DMT-DS-IA8" secondAttribute="leading" constant="16" id="y20-NI-Hl0"/>
|
||||
<constraint firstAttribute="trailing" secondItem="P02-LU-aJg" secondAttribute="trailing" constant="16" id="Cfs-Tk-x96"/>
|
||||
<constraint firstItem="vP5-71-7ne" firstAttribute="leading" secondItem="ijj-tP-TWa" secondAttribute="leading" constant="16" id="OaR-ZQ-v14"/>
|
||||
<constraint firstAttribute="trailing" secondItem="vP5-71-7ne" secondAttribute="trailing" constant="16" id="VH1-l3-G4u"/>
|
||||
<constraint firstItem="P02-LU-aJg" firstAttribute="leading" secondItem="ijj-tP-TWa" secondAttribute="leading" constant="16" id="ePx-lP-s1D"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.94509803921568625" green="0.96078431372549022" blue="0.97254901960784312" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<viewLayoutGuide key="safeArea" id="JOO-VS-ZhZ"/>
|
||||
<color key="backgroundColor" red="0.94509803920000002" green="0.96078431369999995" blue="0.97254901959999995" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="bFg-jh-JZB" firstAttribute="bottom" secondItem="1YE-D1-eHn" secondAttribute="bottom" constant="20" id="5mk-pT-EGS"/>
|
||||
<constraint firstItem="1YE-D1-eHn" firstAttribute="top" secondItem="bFg-jh-JZB" secondAttribute="top" constant="20" id="Jzf-aA-rX7"/>
|
||||
<constraint firstItem="DMT-DS-IA8" firstAttribute="top" secondItem="bFg-jh-JZB" secondAttribute="top" constant="8" id="Mlg-kp-E06"/>
|
||||
<constraint firstItem="bFg-jh-JZB" firstAttribute="trailing" secondItem="DMT-DS-IA8" secondAttribute="trailing" id="Vwu-g7-vNh"/>
|
||||
<constraint firstItem="bFg-jh-JZB" firstAttribute="trailing" secondItem="1YE-D1-eHn" secondAttribute="trailing" id="cxG-Xd-t0n"/>
|
||||
<constraint firstItem="bFg-jh-JZB" firstAttribute="bottom" secondItem="DMT-DS-IA8" secondAttribute="bottom" constant="8" id="gPa-B5-LIs"/>
|
||||
<constraint firstItem="DMT-DS-IA8" firstAttribute="leading" secondItem="bFg-jh-JZB" secondAttribute="leading" id="kA7-cw-VK1"/>
|
||||
<constraint firstItem="1YE-D1-eHn" firstAttribute="leading" secondItem="bFg-jh-JZB" secondAttribute="leading" id="qOT-0t-zQs"/>
|
||||
<constraint firstItem="2C5-9h-WBh" firstAttribute="leading" secondItem="JOO-VS-ZhZ" secondAttribute="leading" id="GDm-Zj-HkD"/>
|
||||
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="bottom" secondItem="ijj-tP-TWa" secondAttribute="bottom" constant="8" id="NOR-4o-53b"/>
|
||||
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="trailing" secondItem="2C5-9h-WBh" secondAttribute="trailing" id="WtN-Mc-Yc9"/>
|
||||
<constraint firstItem="2C5-9h-WBh" firstAttribute="top" secondItem="JOO-VS-ZhZ" secondAttribute="top" constant="20" id="gfi-Hz-NNR"/>
|
||||
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="trailing" secondItem="ijj-tP-TWa" secondAttribute="trailing" id="vf0-Cs-hGp"/>
|
||||
<constraint firstItem="ijj-tP-TWa" firstAttribute="top" secondItem="JOO-VS-ZhZ" secondAttribute="top" constant="8" id="w0n-j6-vi0"/>
|
||||
<constraint firstItem="JOO-VS-ZhZ" firstAttribute="bottom" secondItem="2C5-9h-WBh" secondAttribute="bottom" constant="20" id="wAu-A9-h4H"/>
|
||||
<constraint firstItem="ijj-tP-TWa" firstAttribute="leading" secondItem="JOO-VS-ZhZ" secondAttribute="leading" id="z53-0s-WYH"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="bFg-jh-JZB"/>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="bottomView" destination="N9V-f7-d5k" id="H5X-Px-d4w"/>
|
||||
<outlet property="digitsStackView" destination="W0M-eq-abZ" id="xnb-6w-dtC"/>
|
||||
<outlet property="explanatoryLabel" destination="Rn2-qe-htS" id="8WG-b4-nhE"/>
|
||||
<outlet property="forgotPinButton" destination="CRt-Fb-0Dq" id="kHp-wn-P0o"/>
|
||||
<outlet property="inactiveLogoImageView" destination="8qz-Yk-9a4" id="DFZ-fF-0NC"/>
|
||||
<outlet property="inactiveView" destination="1YE-D1-eHn" id="I2t-3r-WUQ"/>
|
||||
<outlet property="informationLabel" destination="bxI-mu-qng" id="pbX-aZ-inC"/>
|
||||
<outlet property="logoImageView" destination="UHg-qE-anw" id="8C0-pd-i3b"/>
|
||||
<outlet property="mainStackView" destination="DMT-DS-IA8" id="qYw-KO-M4k"/>
|
||||
<outlet property="notAllowedPinLabel" destination="H5g-FI-xEj" id="QYZ-bo-QLC"/>
|
||||
<outlet property="notAllowedPinLineView" destination="Q0w-RD-JD3" id="pJ4-2x-eTq"/>
|
||||
<outlet property="notAllowedPinView" destination="CBc-7Z-a5Z" id="ySo-7J-MBK"/>
|
||||
<outlet property="placeholderStackView" destination="xi9-P9-8WP" id="ynl-7M-Rpb"/>
|
||||
<outlet property="bottomView" destination="a0M-Zw-56s" id="nlL-WO-RWV"/>
|
||||
<outlet property="digitsStackView" destination="5Ek-SS-9WZ" id="1TV-zd-a0a"/>
|
||||
<outlet property="explanatoryLabel" destination="vP5-71-7ne" id="Skx-tQ-sV1"/>
|
||||
<outlet property="forgotPinButton" destination="TMg-AX-OiC" id="0xJ-0V-oGD"/>
|
||||
<outlet property="inactiveLogoImageView" destination="a9H-du-3Ut" id="yab-rw-0IM"/>
|
||||
<outlet property="inactiveView" destination="2C5-9h-WBh" id="EEN-2K-5JO"/>
|
||||
<outlet property="informationLabel" destination="P02-LU-aJg" id="RNn-0E-gM1"/>
|
||||
<outlet property="logoImageView" destination="dYQ-6D-LIv" id="2Pi-aB-UN7"/>
|
||||
<outlet property="mainStackView" destination="ijj-tP-TWa" id="Ewq-Xl-zf5"/>
|
||||
<outlet property="notAllowedPinLabel" destination="da8-CR-YzN" id="8gj-sh-BZe"/>
|
||||
<outlet property="notAllowedPinLineView" destination="PaC-DW-0rz" id="MvD-mH-RwB"/>
|
||||
<outlet property="notAllowedPinView" destination="eVt-IS-UTE" id="aID-QN-yrd"/>
|
||||
<outlet property="placeholderStackView" destination="fj9-IE-pSQ" id="3IO-F8-3We"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="zK0-v6-7Wt" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="8iF-Ux-8rI" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-3199.1999999999998" y="-648.12593703148434"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="app_symbol" width="120" height="120"/>
|
||||
<image name="back_icon" width="14" height="23"/>
|
||||
<image name="callkit_icon" width="40" height="40"/>
|
||||
<image name="selection_untick" width="22" height="22"/>
|
||||
<systemColor name="systemRedColor">
|
||||
<color red="1" green="0.23137254901960785" blue="0.18823529411764706" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// $ createScreen.sh SetPinCode/EnterPinCode EnterPinCode
|
||||
/*
|
||||
Copyright 2020 New Vector Ltd
|
||||
Copyright (c) 2021 BWI GmbH
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@@ -161,7 +162,7 @@ final class EnterPinCodeViewController: UIViewController {
|
||||
}
|
||||
|
||||
private func setupViews() {
|
||||
let cancelBarButtonItem = MXKBarButtonItem(title: VectorL10n.cancel, style: .plain) { [weak self] in
|
||||
let cancelBarButtonItem = MXKBarButtonItem(title: NSLocalizedString("cancel", tableName: "Vector", comment: ""), style: .plain) { [weak self] in
|
||||
self?.cancelButtonAction()
|
||||
}
|
||||
|
||||
@@ -171,6 +172,7 @@ final class EnterPinCodeViewController: UIViewController {
|
||||
self.title = ""
|
||||
|
||||
notAllowedPinLabel.text = VectorL10n.pinProtectionNotAllowedPin
|
||||
forgotPinButton.setTitle(VectorL10n.pinProtectionForgotPin, for: .normal)
|
||||
|
||||
placeholderStackView.vc_removeAllArrangedSubviews()
|
||||
for i in 0..<PinCodePreferences.shared.numberOfDigits {
|
||||
@@ -227,6 +229,7 @@ final class EnterPinCodeViewController: UIViewController {
|
||||
self.logoImageView.isHidden = true
|
||||
self.informationLabel.text = VectorL10n.pinProtectionChoosePin
|
||||
self.explanatoryLabel.isHidden = false
|
||||
self.explanatoryLabel.text = VectorL10n.pinProtectionExplanatory
|
||||
self.forgotPinButton.isHidden = true
|
||||
self.bottomView.isHidden = false
|
||||
self.notAllowedPinView.isHidden = true
|
||||
@@ -258,15 +261,16 @@ final class EnterPinCodeViewController: UIViewController {
|
||||
self.mainStackView.isHidden = false
|
||||
self.informationLabel.text = VectorL10n.pinProtectionConfirmPin
|
||||
self.notAllowedPinView.isHidden = true
|
||||
|
||||
self.explanatoryLabel.isHidden = true
|
||||
|
||||
// reset placeholders
|
||||
renderPlaceholdersCount(0)
|
||||
}
|
||||
|
||||
private func renderPinsDontMatch() {
|
||||
let error = MXKErrorViewModel(title: VectorL10n.pinProtectionMismatchErrorTitle,
|
||||
message: VectorL10n.pinProtectionMismatchErrorMessage)
|
||||
|
||||
let error = MXKErrorViewModel(title: NSLocalizedString("pin_protection_mismatch_error_title", tableName: "Vector", comment: ""),
|
||||
message: NSLocalizedString("pin_protection_mismatch_error_message", tableName: "Vector", comment: ""))
|
||||
|
||||
self.activityPresenter.removeCurrentActivityIndicator(animated: true)
|
||||
self.errorPresenter.presentError(from: self, for: error, animated: true) {
|
||||
self.viewModel.process(viewAction: .pinsDontMatchAlertAction)
|
||||
@@ -294,23 +298,23 @@ final class EnterPinCodeViewController: UIViewController {
|
||||
}
|
||||
|
||||
private func renderWrongPinTooManyTimes() {
|
||||
let error = MXKErrorViewModel(title: VectorL10n.pinProtectionMismatchErrorTitle,
|
||||
message: VectorL10n.pinProtectionMismatchTooManyTimesErrorMessage)
|
||||
let error = MXKErrorViewModel(title: NSLocalizedString("pin_protection_mismatch_error_title", tableName: "Vector", comment: ""),
|
||||
message: NSLocalizedString("pin_protection_mismatch_too_many_times_error_message", tableName: "Vector", comment: ""))
|
||||
|
||||
self.activityPresenter.removeCurrentActivityIndicator(animated: true)
|
||||
self.errorPresenter.presentError(from: self, for: error, animated: true, handler: nil)
|
||||
}
|
||||
|
||||
private func renderForgotPin() {
|
||||
let controller = UIAlertController(title: VectorL10n.pinProtectionResetAlertTitle,
|
||||
message: VectorL10n.pinProtectionResetAlertMessage,
|
||||
let controller = UIAlertController(title: NSLocalizedString("pin_protection_reset_alert_title", tableName: "Vector", comment: ""),
|
||||
message: NSLocalizedString("pin_protection_reset_alert_message", tableName: "Vector", comment: ""),
|
||||
preferredStyle: .alert)
|
||||
|
||||
let resetAction = UIAlertAction(title: VectorL10n.pinProtectionResetAlertActionReset, style: .default) { (_) in
|
||||
let resetAction = UIAlertAction(title: NSLocalizedString("pin_protection_reset_alert_action_reset", tableName: "Vector", comment: ""), style: .default) { (_) in
|
||||
self.viewModel.process(viewAction: .forgotPinAlertResetAction)
|
||||
}
|
||||
|
||||
let cancelAction = UIAlertAction(title: VectorL10n.cancel, style: .cancel) { (_) in
|
||||
let cancelAction = UIAlertAction(title: NSLocalizedString("cancel", tableName: "Vector", comment: ""), style: .cancel) { (_) in
|
||||
self.viewModel.process(viewAction: .forgotPinAlertCancelAction)
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// $ createScreen.sh SetPinCode/EnterPinCode EnterPinCode
|
||||
/*
|
||||
Copyright 2020 New Vector Ltd
|
||||
Copyright (c) 2021 BWI GmbH
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
@@ -120,14 +121,15 @@ final class EnterPinCodeViewModel: EnterPinCodeViewModelType {
|
||||
updateAfterPinSet()
|
||||
case .unlock, .confirmPinToDeactivate:
|
||||
// unlocking
|
||||
if currentPin != pinCodePreferences.pin {
|
||||
if !pinCodePreferences.pinsMatch(currentPin) {
|
||||
// no match
|
||||
updateAfterUnlockFailed()
|
||||
} else {
|
||||
// match
|
||||
// we can use biometrics anymore, if set
|
||||
pinCodePreferences.canUseBiometricsToUnlock = nil
|
||||
pinCodePreferences.canUseBiometricsToUnlock = true
|
||||
pinCodePreferences.resetCounters()
|
||||
EncryptionKeyManager.shared.initKeys()
|
||||
// complete with a little delay
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
|
||||
self.coordinatorDelegate?.enterPinCodeViewModelDidComplete(self)
|
||||
@@ -135,7 +137,7 @@ final class EnterPinCodeViewModel: EnterPinCodeViewModelType {
|
||||
}
|
||||
case .changePin:
|
||||
// unlocking
|
||||
if initialPin.isEmpty && currentPin != pinCodePreferences.pin {
|
||||
if initialPin.isEmpty && !pinCodePreferences.pinsMatch(currentPin) {
|
||||
// no match
|
||||
updateAfterUnlockFailed()
|
||||
} else if initialPin.isEmpty {
|
||||
|
||||
Reference in New Issue
Block a user