Browse Source

Improve layout on smaller devices, add support for dynamic font sizes,

display white scrollbar in dark mode
master
djbeadle 11 months ago
parent
commit
a182a6fe67

+ 2
- 2
InhalerTracker.xcodeproj/project.pbxproj View File

@@ -486,7 +486,7 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = P9YE363FNG;
INFOPLIST_FILE = "$(SRCROOT)/InhalerTracker/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = net.danielbeadle.InhalerTracker;
PRODUCT_NAME = "Inhaler Tracker";
@@ -505,7 +505,7 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = P9YE363FNG;
INFOPLIST_FILE = "$(SRCROOT)/InhalerTracker/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = net.danielbeadle.InhalerTracker;
PRODUCT_NAME = "Inhaler Tracker";

+ 43
- 101
InhalerTracker/Base.lproj/Main.storyboard View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="QyN-Ud-M50">
<device id="retina4_7" orientation="portrait">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="QyN-Ud-M50">
<device id="retina4_0" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@@ -13,13 +13,13 @@
<!--Inhaler Tracker-->
<scene sceneID="oxB-cM-SOi">
<objects>
<viewController id="uEo-xt-RzU" customClass="ViewController" customModule="InhalerTrackerV2" customModuleProvider="target" sceneMemberID="viewController">
<viewController id="uEo-xt-RzU" customClass="ViewController" customModule="Inhaler_Tracker" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="LBJ-Tx-rgm">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stepper opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minimumValue="1" maximumValue="20" translatesAutoresizingMaskIntoConstraints="NO" id="6b2-df-AQd">
<rect key="frame" x="140" y="234" width="94" height="29"/>
<rect key="frame" x="113" y="234" width="94" height="29"/>
<constraints>
<constraint firstAttribute="width" constant="94" id="gWo-Fo-HvL"/>
</constraints>
@@ -28,14 +28,15 @@
</connections>
</stepper>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lA0-Yo-OKX">
<rect key="frame" x="163" y="539" width="49" height="30"/>
<rect key="frame" x="131.5" y="539" width="57" height="33"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<state key="normal" title="Submit"/>
<connections>
<action selector="submitButtonPressed:" destination="uEo-xt-RzU" eventType="touchUpInside" id="NvH-Fn-0OS"/>
</connections>
</button>
<datePicker contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="dateAndTime" minuteInterval="1" translatesAutoresizingMaskIntoConstraints="NO" id="yVh-Ae-7AI">
<rect key="frame" x="0.0" y="283" width="375" height="216"/>
<rect key="frame" x="0.0" y="283" width="320" height="216"/>
<date key="date" timeIntervalSinceReferenceDate="539460367.06339002">
<!--2018-02-04 18:06:07 +0000-->
</date>
@@ -47,7 +48,7 @@
</connections>
</datePicker>
<textField opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="1" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="nmT-Gm-r3c">
<rect key="frame" x="87" y="94" width="200" height="120"/>
<rect key="frame" x="60" y="94" width="200" height="120"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" notEnabled="YES"/>
</accessibility>
@@ -59,7 +60,7 @@
<textInputTraits key="textInputTraits"/>
</textField>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="HGA-1G-vPZ">
<rect key="frame" x="167" y="499" width="40" height="40"/>
<rect key="frame" x="140" y="499" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="0l5-lI-0So"/>
<constraint firstAttribute="height" constant="40" id="Ncm-2f-ADh"/>
@@ -86,7 +87,7 @@
<navigationItem key="navigationItem" title="Inhaler Tracker" id="j3F-Ng-IOq">
<barButtonItem key="rightBarButtonItem" style="done" id="obn-A6-UDO">
<button key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="infoLight" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" id="iQb-P0-xaW">
<rect key="frame" x="337" y="11" width="22" height="22"/>
<rect key="frame" x="282" y="11" width="22" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections>
<segue destination="Uhx-wq-JVk" kind="show" id="k3T-ZX-hat"/>
@@ -112,79 +113,42 @@
<!--InfoVC-->
<scene sceneID="Ito-Cm-FqP">
<objects>
<viewController id="Uhx-wq-JVk" customClass="infoVC" customModule="InhalerTrackerV2" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="rXL-ge-OAP" userLabel="InfoView">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<viewController id="Uhx-wq-JVk" customClass="infoVC" customModule="Inhaler_Tracker" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" layoutMarginsFollowReadableWidth="YES" id="rXL-ge-OAP" userLabel="InfoView">
<rect key="frame" x="0.0" y="0.0" width="375" height="675"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" editable="NO" textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="jnf-6c-jPo">
<rect key="frame" x="27" y="129" width="320" height="52"/>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" editable="NO" textAlignment="center" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XYH-wn-9on">
<rect key="frame" x="16" y="74" width="343" height="508"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" link="YES"/>
</accessibility>
<constraints>
<constraint firstAttribute="width" constant="320" id="13g-qL-90C"/>
<constraint firstAttribute="height" constant="52" id="hBG-TC-AvZ"/>
</constraints>
<string key="text">Inhaler icon made by Freepik from
www.flaticon.com </string>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<dataDetectorType key="dataDetectorTypes" link="YES"/>
</textView>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" editable="NO" textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Vuy-JU-kEd">
<rect key="frame" x="27" y="325" width="320" height="52"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" link="YES"/>
</accessibility>
<constraints>
<constraint firstAttribute="width" constant="320" id="HLL-jD-u9T"/>
<constraint firstAttribute="height" constant="52" id="MLr-GX-qdX"/>
</constraints>
<string key="text">The source code for this app can be found at
https://github.com/djbeadle/InhalerTracker</string>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<dataDetectorType key="dataDetectorTypes" link="YES"/>
</textView>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" editable="NO" textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="qQa-Lf-91O">
<rect key="frame" x="27" y="191" width="320" height="124"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" link="YES"/>
</accessibility>
<constraints>
<constraint firstAttribute="width" constant="320" id="5jq-ie-QRd"/>
<constraint firstAttribute="height" constant="124" id="YIu-3T-fQz"/>
</constraints>
<string key="text">The only thing this application does is log your inhaler usage to Apple's HealthKit framework. This app does not transmit or store your data. The full privacy policy can be found at:
http://DanielBeadle.net/inhalertracker.html</string>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<dataDetectorType key="dataDetectorTypes" link="YES"/>
</textView>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="XYH-wn-9on">
<rect key="frame" x="27.5" y="74" width="320" height="45"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" link="YES"/>
</accessibility>
<constraints>
<constraint firstAttribute="width" constant="320" id="TMA-JH-seH"/>
<constraint firstAttribute="height" constant="45" id="oNe-ii-5eU"/>
</constraints>
<string key="text">App developed by Daniel Beadle
DanielBeadle.net</string>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
www.DanielBeadle.net

The only thing this application does is log your inhaler usage to Apple's HealthKit on your device. This app does not transmit or store your data anywhere else. The full privacy policy can be found at:
www.DanielBeadle.net/inhalerprivacy.html

The source code for this app can be found at
https://github.com/djbeadle/InhalerTracker

Inhaler icon made by Freepik (www.flaticon.com/authors/freepik) from
www.flaticon.com

The success and error icons come from the Open Iconic set. A copy of the project's MIT license can be found here:
https://github.com/iconic/open-iconic/blob/master/ICON-LICENSE</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<dataDetectorType key="dataDetectorTypes" link="YES"/>
</textView>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="F6B-Ay-igd">
<rect key="frame" x="321" y="587" width="51" height="31"/>
<rect key="frame" x="316" y="590" width="51" height="31"/>
<connections>
<action selector="changeUIMode:" destination="Uhx-wq-JVk" eventType="valueChanged" id="ILu-tZ-HE5"/>
</connections>
</switch>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="top" text="Dark Mode" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="tOK-75-tQJ">
<rect key="frame" x="241" y="596" width="75" height="17"/>
<rect key="frame" x="233" y="597" width="75" height="17"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" notEnabled="YES"/>
</accessibility>
@@ -192,48 +156,26 @@ DanielBeadle.net</string>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="MaI-16-sv8">
<rect key="frame" x="27" y="387" width="320" height="100"/>
<constraints>
<constraint firstAttribute="width" constant="320" id="UNR-uS-wkc"/>
<constraint firstAttribute="height" constant="100" id="e1u-2P-1TI"/>
</constraints>
<string key="text">The success and error icons come from the Open Iconic set. A copy of the project's MIT license can be found here:
https://github.com/iconic/open-iconic/blob/master/ICON-LICENSE</string>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<dataDetectorType key="dataDetectorTypes" link="YES"/>
</textView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="qQa-Lf-91O" firstAttribute="centerX" secondItem="rXL-ge-OAP" secondAttribute="centerX" id="01f-P6-0Fj"/>
<constraint firstItem="jnf-6c-jPo" firstAttribute="centerX" secondItem="rXL-ge-OAP" secondAttribute="centerX" id="75M-EQ-c4k"/>
<constraint firstItem="MaI-16-sv8" firstAttribute="centerX" secondItem="rXL-ge-OAP" secondAttribute="centerX" id="HR4-bh-Dee"/>
<constraint firstItem="jnf-6c-jPo" firstAttribute="top" secondItem="XYH-wn-9on" secondAttribute="bottom" constant="10" id="Iz7-da-ORC"/>
<constraint firstItem="qQa-Lf-91O" firstAttribute="top" secondItem="jnf-6c-jPo" secondAttribute="bottom" constant="10" id="J2e-Co-1Bl"/>
<constraint firstItem="qQa-Lf-91O" firstAttribute="centerX" secondItem="rXL-ge-OAP" secondAttribute="centerX" id="ehH-sy-n8D"/>
<constraint firstItem="F6B-Ay-igd" firstAttribute="leading" secondItem="tOK-75-tQJ" secondAttribute="trailing" constant="5" id="lTP-Cq-vUD"/>
<constraint firstItem="Vuy-JU-kEd" firstAttribute="centerX" secondItem="rXL-ge-OAP" secondAttribute="centerX" id="o2A-NO-LNU"/>
<constraint firstItem="XYH-wn-9on" firstAttribute="centerX" secondItem="rXL-ge-OAP" secondAttribute="centerX" id="ope-lq-ZHk"/>
<constraint firstItem="XYH-wn-9on" firstAttribute="top" secondItem="z3h-SZ-LZc" secondAttribute="top" constant="10" id="qJe-u9-4OA"/>
<constraint firstItem="Vuy-JU-kEd" firstAttribute="top" secondItem="qQa-Lf-91O" secondAttribute="bottom" constant="10" id="qal-3p-JgL"/>
<constraint firstItem="MaI-16-sv8" firstAttribute="top" secondItem="Vuy-JU-kEd" secondAttribute="bottom" constant="10" id="trd-OQ-Gxj"/>
<constraint firstItem="z3h-SZ-LZc" firstAttribute="bottom" secondItem="tOK-75-tQJ" secondAttribute="bottom" constant="10" id="wpT-sR-JYN"/>
<constraint firstItem="z3h-SZ-LZc" firstAttribute="trailing" secondItem="F6B-Ay-igd" secondAttribute="trailing" constant="5" id="y74-ee-DF1"/>
<constraint firstItem="z3h-SZ-LZc" firstAttribute="bottom" secondItem="F6B-Ay-igd" secondAttribute="bottom" constant="5" id="zev-uz-b6w"/>
<constraint firstItem="z3h-SZ-LZc" firstAttribute="trailing" secondItem="XYH-wn-9on" secondAttribute="trailing" constant="16" id="92V-Px-W32"/>
<constraint firstItem="F6B-Ay-igd" firstAttribute="leading" secondItem="tOK-75-tQJ" secondAttribute="trailing" constant="8" id="IXO-1h-pE9"/>
<constraint firstItem="z3h-SZ-LZc" firstAttribute="bottom" secondItem="tOK-75-tQJ" secondAttribute="bottom" constant="17" id="KuM-Ac-hoa"/>
<constraint firstItem="XYH-wn-9on" firstAttribute="leading" secondItem="z3h-SZ-LZc" secondAttribute="leading" constant="16" id="Oyf-69-2Xr"/>
<constraint firstItem="F6B-Ay-igd" firstAttribute="top" secondItem="XYH-wn-9on" secondAttribute="bottom" constant="8" id="Qzc-v9-KwB"/>
<constraint firstItem="XYH-wn-9on" firstAttribute="top" secondItem="z3h-SZ-LZc" secondAttribute="top" constant="10" id="RfN-fC-gPd"/>
<constraint firstItem="z3h-SZ-LZc" firstAttribute="bottom" secondItem="F6B-Ay-igd" secondAttribute="bottom" constant="10" id="c7e-uQ-yCi"/>
<constraint firstItem="z3h-SZ-LZc" firstAttribute="trailing" secondItem="F6B-Ay-igd" secondAttribute="trailing" constant="10" id="ccT-Tu-SAJ"/>
</constraints>
<viewLayoutGuide key="safeArea" id="z3h-SZ-LZc"/>
</view>
<size key="freeformSize" width="375" height="675"/>
<connections>
<outlet property="bylineText" destination="XYH-wn-9on" id="CZw-RJ-ZTx"/>
<outlet property="darkMode" destination="F6B-Ay-igd" id="HUL-Go-hxN"/>
<outlet property="darkModeText" destination="tOK-75-tQJ" id="WhA-iU-h4y"/>
<outlet property="iconCreditText" destination="jnf-6c-jPo" id="Omg-jN-mxf"/>
<outlet property="infoView" destination="rXL-ge-OAP" id="2Hz-aB-XuM"/>
<outlet property="openIconicText" destination="MaI-16-sv8" id="f5Z-fH-k3A"/>
<outlet property="privacyText" destination="qQa-Lf-91O" id="iMq-Xi-Ukl"/>
<outlet property="sourceText" destination="Vuy-JU-kEd" id="APM-Z1-BbK"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="ihh-WN-Ey5" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -246,7 +188,7 @@ https://github.com/iconic/open-iconic/blob/master/ICON-LICENSE</string>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="QyN-Ud-M50" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="jsF-wh-Pen">
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
<rect key="frame" x="0.0" y="20" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>

+ 4
- 16
InhalerTracker/infoVC.swift View File

@@ -33,11 +33,8 @@ class infoVC: UIViewController{
// print("Presenting dark mode")
view.backgroundColor = .black
bylineText.textColor = .lightGray
iconCreditText.textColor = .lightGray
sourceText.textColor = .lightGray
privacyText.textColor = .lightGray
bylineText.indicatorStyle = .white
darkModeText.textColor = .lightGray
openIconicText.textColor = .lightGray
darkMode.setOn(true, animated: false)
self.navigationController?.navigationBar.barTintColor = .darkGray
@@ -47,11 +44,8 @@ class infoVC: UIViewController{
// print("Presenting light mode")
view.backgroundColor = .white
bylineText.textColor = .black
iconCreditText.textColor = .black
sourceText.textColor = .black
privacyText.textColor = .black
bylineText.indicatorStyle = .black
darkModeText.textColor = .black
openIconicText.textColor = .black
darkMode.setOn(false, animated: false)
self.navigationController?.navigationBar.barTintColor = .white
@@ -77,11 +71,8 @@ class infoVC: UIViewController{
view.backgroundColor = .white
bylineText.textColor = .black
iconCreditText.textColor = .black
sourceText.textColor = .black
privacyText.textColor = .black
bylineText.indicatorStyle = .white
darkModeText.textColor = .black
openIconicText.textColor = .black
self.navigationController?.navigationBar.barTintColor = .white

@@ -92,11 +83,8 @@ class infoVC: UIViewController{
defaults.set(true, forKey: "darkMode")
view.backgroundColor = .black
bylineText.textColor = .lightGray
iconCreditText.textColor = .lightGray
sourceText.textColor = .lightGray
privacyText.textColor = .lightGray
bylineText.indicatorStyle = .white
darkModeText.textColor = .lightGray
openIconicText.textColor = .lightGray
self.navigationController?.navigationBar.barTintColor = UIColor.darkGray
}

+ 39
- 28
InhalerTrackerExtension/Base.lproj/MainInterface.storyboard View File

@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="M4Y-Lb-cyx">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="M4Y-Lb-cyx">
<device id="ipad12_9" orientation="landscape">
<adaptation id="splitview1_3"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@@ -20,13 +19,13 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stepper opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minimumValue="1" maximumValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="w4c-3U-Sqi">
<rect key="frame" x="141" y="11" width="94" height="29"/>
<rect key="frame" x="140.5" y="10.5" width="94" height="29"/>
<connections>
<action selector="stepperChanged:" destination="M4Y-Lb-cyx" eventType="valueChanged" id="Pww-HF-faa"/>
</connections>
</stepper>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="0Ai-DZ-xVj">
<rect key="frame" x="258" y="14" width="22" height="22"/>
<rect key="frame" x="250.5" y="14" width="22" height="22"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="contactAdd" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="o7Q-Eh-wo3">
<rect key="frame" x="0.0" y="0.0" width="22" height="22"/>
@@ -35,35 +34,47 @@
</connections>
</button>
</subviews>
</stackView>
<textField opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="1" textAlignment="center" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="afP-Yy-Dou">
<rect key="frame" x="8" y="5" width="125" height="40"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="4ag-SJ-tGg"/>
<constraint firstItem="o7Q-Eh-wo3" firstAttribute="centerY" secondItem="0Ai-DZ-xVj" secondAttribute="centerY" id="FI6-mo-92n"/>
</constraints>
</stackView>
<textField opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="1" textAlignment="center" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="afP-Yy-Dou">
<rect key="frame" x="8" y="10" width="116.5" height="30"/>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" weight="ultraLight" pointSize="16"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<textInputTraits key="textInputTraits"/>
</textField>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="c2L-gT-NKO">
<rect key="frame" x="307" y="5" width="40" height="40"/>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bjs-oB-8tz">
<rect key="frame" x="272.5" y="5" width="102.5" height="40"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="c2L-gT-NKO">
<rect key="frame" x="31.5" y="0.0" width="40" height="40"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="QH0-Bl-sqF"/>
<constraint firstAttribute="width" secondItem="c2L-gT-NKO" secondAttribute="height" multiplier="1:1" id="YAz-aa-etk"/>
<constraint firstAttribute="width" constant="40" id="wDS-nG-cvT"/>
</constraints>
</imageView>
</subviews>
<color key="tintColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="c2L-gT-NKO" secondAttribute="height" multiplier="1:1" id="YAz-aa-etk"/>
<constraint firstItem="c2L-gT-NKO" firstAttribute="centerX" secondItem="bjs-oB-8tz" secondAttribute="centerX" id="Oza-LC-QzS"/>
<constraint firstAttribute="height" constant="40" id="Q3s-SE-Mff"/>
<constraint firstItem="c2L-gT-NKO" firstAttribute="centerY" secondItem="bjs-oB-8tz" secondAttribute="centerY" id="tWO-2C-AgS"/>
</constraints>
</imageView>
</view>
</subviews>
<constraints>
<constraint firstItem="afP-Yy-Dou" firstAttribute="top" secondItem="c2L-gT-NKO" secondAttribute="top" id="Gge-vQ-8DF"/>
<constraint firstItem="afP-Yy-Dou" firstAttribute="leading" secondItem="ssy-KU-ocm" secondAttribute="leading" constant="8" id="Kij-Ql-VTI"/>
<constraint firstItem="0Ai-DZ-xVj" firstAttribute="leading" secondItem="w4c-3U-Sqi" secondAttribute="trailing" constant="23" id="LQj-jw-hul"/>
<constraint firstItem="0Ai-DZ-xVj" firstAttribute="centerY" secondItem="afP-Yy-Dou" secondAttribute="centerY" id="P8i-aP-XHT"/>
<constraint firstItem="w4c-3U-Sqi" firstAttribute="leading" secondItem="afP-Yy-Dou" secondAttribute="trailing" constant="8" symbolic="YES" id="US0-ab-lD7"/>
<constraint firstItem="ssy-KU-ocm" firstAttribute="trailing" secondItem="c2L-gT-NKO" secondAttribute="trailing" constant="28" id="VYd-Uy-8z3"/>
<constraint firstItem="w4c-3U-Sqi" firstAttribute="centerY" secondItem="afP-Yy-Dou" secondAttribute="centerY" id="dQj-q2-pCr"/>
<constraint firstItem="w4c-3U-Sqi" firstAttribute="centerX" secondItem="S3S-Oj-5AN" secondAttribute="centerX" id="jpG-DW-g5q"/>
<constraint firstItem="afP-Yy-Dou" firstAttribute="top" relation="greaterThanOrEqual" secondItem="ssy-KU-ocm" secondAttribute="top" constant="5" id="m3k-Gp-cRJ"/>
<constraint firstItem="afP-Yy-Dou" firstAttribute="bottom" secondItem="c2L-gT-NKO" secondAttribute="bottom" id="q0a-Cs-q12"/>
<constraint firstItem="afP-Yy-Dou" firstAttribute="centerY" secondItem="S3S-Oj-5AN" secondAttribute="centerY" id="t9C-QT-gQL"/>
<constraint firstItem="afP-Yy-Dou" firstAttribute="leading" secondItem="ssy-KU-ocm" secondAttribute="leading" constant="8" id="3q5-UJ-vfw"/>
<constraint firstItem="bjs-oB-8tz" firstAttribute="leading" secondItem="0Ai-DZ-xVj" secondAttribute="trailing" id="4f6-Wa-KHq"/>
<constraint firstItem="0Ai-DZ-xVj" firstAttribute="centerY" secondItem="S3S-Oj-5AN" secondAttribute="centerY" id="FPK-oC-VcM"/>
<constraint firstItem="bjs-oB-8tz" firstAttribute="centerY" secondItem="S3S-Oj-5AN" secondAttribute="centerY" id="Y14-Ej-S0g"/>
<constraint firstItem="w4c-3U-Sqi" firstAttribute="centerY" secondItem="S3S-Oj-5AN" secondAttribute="centerY" id="YeP-UK-mTa"/>
<constraint firstItem="w4c-3U-Sqi" firstAttribute="centerX" secondItem="S3S-Oj-5AN" secondAttribute="centerX" id="ctr-uz-tko"/>
<constraint firstItem="afP-Yy-Dou" firstAttribute="centerY" secondItem="S3S-Oj-5AN" secondAttribute="centerY" id="gY8-Lq-8pj"/>
<constraint firstItem="ssy-KU-ocm" firstAttribute="trailing" secondItem="bjs-oB-8tz" secondAttribute="trailing" id="gzn-ta-YW6"/>
<constraint firstItem="0Ai-DZ-xVj" firstAttribute="leading" secondItem="w4c-3U-Sqi" secondAttribute="trailing" constant="16" id="nJF-PM-dS3"/>
<constraint firstItem="w4c-3U-Sqi" firstAttribute="leading" secondItem="afP-Yy-Dou" secondAttribute="trailing" constant="16" id="wNX-ks-YqS"/>
</constraints>
<viewLayoutGuide key="safeArea" id="ssy-KU-ocm"/>
</view>
@@ -79,7 +90,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="vXp-U4-Rya" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="116.8" y="118.29085457271366"/>
<point key="canvasLocation" x="114.40000000000001" y="116.01562499999999"/>
</scene>
</scenes>
</document>

Loading…
Cancel
Save