Manos Chorianopoulos

crash fix

...@@ -17,19 +17,15 @@ ...@@ -17,19 +17,15 @@
17 <rect key="frame" x="0.0" y="0.0" width="170" height="280"/> 17 <rect key="frame" x="0.0" y="0.0" width="170" height="280"/>
18 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 18 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
19 <subviews> 19 <subviews>
20 - <!-- parentView: card container with border + rounded corners -->
21 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="A1B-CD-EFG" userLabel="parentView"> 20 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="A1B-CD-EFG" userLabel="parentView">
22 <rect key="frame" x="0.0" y="0.0" width="170" height="280"/> 21 <rect key="frame" x="0.0" y="0.0" width="170" height="280"/>
23 <subviews> 22 <subviews>
24 - <!-- Top View: gray background, banner image, logo, discount -->
25 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TOP-vw-001" userLabel="TopView"> 23 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TOP-vw-001" userLabel="TopView">
26 <rect key="frame" x="0.0" y="0.0" width="170" height="140"/> 24 <rect key="frame" x="0.0" y="0.0" width="170" height="140"/>
27 <subviews> 25 <subviews>
28 - <!-- Banner image fills the top view -->
29 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="BNR-img-001"> 26 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="BNR-img-001">
30 <rect key="frame" x="0.0" y="0.0" width="170" height="140"/> 27 <rect key="frame" x="0.0" y="0.0" width="170" height="140"/>
31 </imageView> 28 </imageView>
32 - <!-- Logo image: centered in top view -->
33 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="LGO-img-001"> 29 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="LGO-img-001">
34 <rect key="frame" x="51" y="42" width="48" height="48"/> 30 <rect key="frame" x="51" y="42" width="48" height="48"/>
35 <constraints> 31 <constraints>
...@@ -37,7 +33,6 @@ ...@@ -37,7 +33,6 @@
37 <constraint firstAttribute="height" constant="48" id="LGO-h-001"/> 33 <constraint firstAttribute="height" constant="48" id="LGO-h-001"/>
38 </constraints> 34 </constraints>
39 </imageView> 35 </imageView>
40 - <!-- Discount circle: top-right -->
41 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DSC-vw-001" userLabel="discountView"> 36 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DSC-vw-001" userLabel="discountView">
42 <rect key="frame" x="130" y="8" width="34" height="34"/> 37 <rect key="frame" x="130" y="8" width="34" height="34"/>
43 <subviews> 38 <subviews>
...@@ -61,47 +56,38 @@ ...@@ -61,47 +56,38 @@
61 </subviews> 56 </subviews>
62 <color key="backgroundColor" red="0.937" green="0.941" blue="0.945" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 57 <color key="backgroundColor" red="0.937" green="0.941" blue="0.945" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
63 <constraints> 58 <constraints>
64 - <!-- Banner fills top view -->
65 <constraint firstItem="BNR-img-001" firstAttribute="top" secondItem="TOP-vw-001" secondAttribute="top" id="BNR-t-001"/> 59 <constraint firstItem="BNR-img-001" firstAttribute="top" secondItem="TOP-vw-001" secondAttribute="top" id="BNR-t-001"/>
66 <constraint firstItem="BNR-img-001" firstAttribute="leading" secondItem="TOP-vw-001" secondAttribute="leading" id="BNR-l-001"/> 60 <constraint firstItem="BNR-img-001" firstAttribute="leading" secondItem="TOP-vw-001" secondAttribute="leading" id="BNR-l-001"/>
67 <constraint firstAttribute="trailing" secondItem="BNR-img-001" secondAttribute="trailing" id="BNR-tr-001"/> 61 <constraint firstAttribute="trailing" secondItem="BNR-img-001" secondAttribute="trailing" id="BNR-tr-001"/>
68 <constraint firstAttribute="bottom" secondItem="BNR-img-001" secondAttribute="bottom" id="BNR-b-001"/> 62 <constraint firstAttribute="bottom" secondItem="BNR-img-001" secondAttribute="bottom" id="BNR-b-001"/>
69 - <!-- Logo centered -->
70 <constraint firstItem="LGO-img-001" firstAttribute="centerX" secondItem="TOP-vw-001" secondAttribute="centerX" id="LGO-cx-001"/> 63 <constraint firstItem="LGO-img-001" firstAttribute="centerX" secondItem="TOP-vw-001" secondAttribute="centerX" id="LGO-cx-001"/>
71 <constraint firstItem="LGO-img-001" firstAttribute="centerY" secondItem="TOP-vw-001" secondAttribute="centerY" id="LGO-cy-001"/> 64 <constraint firstItem="LGO-img-001" firstAttribute="centerY" secondItem="TOP-vw-001" secondAttribute="centerY" id="LGO-cy-001"/>
72 - <!-- Discount top-right, 8pt from edges -->
73 <constraint firstAttribute="trailing" secondItem="DSC-vw-001" secondAttribute="trailing" constant="8" id="DSC-tr2-001"/> 65 <constraint firstAttribute="trailing" secondItem="DSC-vw-001" secondAttribute="trailing" constant="8" id="DSC-tr2-001"/>
74 <constraint firstItem="DSC-vw-001" firstAttribute="top" secondItem="TOP-vw-001" secondAttribute="top" constant="8" id="DSC-top-001"/> 66 <constraint firstItem="DSC-vw-001" firstAttribute="top" secondItem="TOP-vw-001" secondAttribute="top" constant="8" id="DSC-top-001"/>
75 - <!-- Top view height -->
76 <constraint firstAttribute="height" constant="140" id="TOP-h-001"/> 67 <constraint firstAttribute="height" constant="140" id="TOP-h-001"/>
77 </constraints> 68 </constraints>
78 </view> 69 </view>
79 - <!-- Bottom View: white, text labels -->
80 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BTM-vw-001" userLabel="BottomView"> 70 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BTM-vw-001" userLabel="BottomView">
81 <rect key="frame" x="0.0" y="140" width="170" height="140"/> 71 <rect key="frame" x="0.0" y="140" width="170" height="140"/>
82 <subviews> 72 <subviews>
83 - <!-- Merchant name label -->
84 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Merchant" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MRC-lbl-001"> 73 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Merchant" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MRC-lbl-001">
85 <rect key="frame" x="10" y="10" width="150" height="16"/> 74 <rect key="frame" x="10" y="10" width="150" height="16"/>
86 <fontDescription key="fontDescription" type="system" pointSize="12"/> 75 <fontDescription key="fontDescription" type="system" pointSize="12"/>
87 <nil key="textColor"/> 76 <nil key="textColor"/>
88 <nil key="highlightedColor"/> 77 <nil key="highlightedColor"/>
89 </label> 78 </label>
90 - <!-- Title label (bold) -->
91 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TTL-lbl-001"> 79 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TTL-lbl-001">
92 <rect key="frame" x="10" y="30" width="150" height="40"/> 80 <rect key="frame" x="10" y="30" width="150" height="40"/>
93 <fontDescription key="fontDescription" type="system" pointSize="15"/> 81 <fontDescription key="fontDescription" type="system" pointSize="15"/>
94 <nil key="textColor"/> 82 <nil key="textColor"/>
95 <nil key="highlightedColor"/> 83 <nil key="highlightedColor"/>
96 </label> 84 </label>
97 - <!-- Subtitle label -->
98 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SUB-lbl-001"> 85 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SUB-lbl-001">
99 <rect key="frame" x="10" y="74" width="150" height="34"/> 86 <rect key="frame" x="10" y="74" width="150" height="34"/>
100 <fontDescription key="fontDescription" type="system" pointSize="13"/> 87 <fontDescription key="fontDescription" type="system" pointSize="13"/>
101 <nil key="textColor"/> 88 <nil key="textColor"/>
102 <nil key="highlightedColor"/> 89 <nil key="highlightedColor"/>
103 </label> 90 </label>
104 - <!-- Expiration label -->
105 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="until 30-09" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EXP-lbl-001"> 91 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="until 30-09" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EXP-lbl-001">
106 <rect key="frame" x="10" y="112" width="150" height="16"/> 92 <rect key="frame" x="10" y="112" width="150" height="16"/>
107 <fontDescription key="fontDescription" type="system" pointSize="12"/> 93 <fontDescription key="fontDescription" type="system" pointSize="12"/>
...@@ -111,19 +97,15 @@ ...@@ -111,19 +97,15 @@
111 </subviews> 97 </subviews>
112 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 98 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
113 <constraints> 99 <constraints>
114 - <!-- Merchant label -->
115 <constraint firstItem="MRC-lbl-001" firstAttribute="top" secondItem="BTM-vw-001" secondAttribute="top" constant="10" id="MRC-t-001"/> 100 <constraint firstItem="MRC-lbl-001" firstAttribute="top" secondItem="BTM-vw-001" secondAttribute="top" constant="10" id="MRC-t-001"/>
116 <constraint firstItem="MRC-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="MRC-l-001"/> 101 <constraint firstItem="MRC-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="MRC-l-001"/>
117 <constraint firstAttribute="trailing" secondItem="MRC-lbl-001" secondAttribute="trailing" constant="10" id="MRC-tr-001"/> 102 <constraint firstAttribute="trailing" secondItem="MRC-lbl-001" secondAttribute="trailing" constant="10" id="MRC-tr-001"/>
118 - <!-- Title below merchant, 4pt gap -->
119 <constraint firstItem="TTL-lbl-001" firstAttribute="top" secondItem="MRC-lbl-001" secondAttribute="bottom" constant="4" id="TTL-t-001"/> 103 <constraint firstItem="TTL-lbl-001" firstAttribute="top" secondItem="MRC-lbl-001" secondAttribute="bottom" constant="4" id="TTL-t-001"/>
120 <constraint firstItem="TTL-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="TTL-l-001"/> 104 <constraint firstItem="TTL-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="TTL-l-001"/>
121 <constraint firstAttribute="trailing" secondItem="TTL-lbl-001" secondAttribute="trailing" constant="10" id="TTL-tr-001"/> 105 <constraint firstAttribute="trailing" secondItem="TTL-lbl-001" secondAttribute="trailing" constant="10" id="TTL-tr-001"/>
122 - <!-- Subtitle below title, 4pt gap -->
123 <constraint firstItem="SUB-lbl-001" firstAttribute="top" secondItem="TTL-lbl-001" secondAttribute="bottom" constant="4" id="SUB-t-001"/> 106 <constraint firstItem="SUB-lbl-001" firstAttribute="top" secondItem="TTL-lbl-001" secondAttribute="bottom" constant="4" id="SUB-t-001"/>
124 <constraint firstItem="SUB-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="SUB-l-001"/> 107 <constraint firstItem="SUB-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="SUB-l-001"/>
125 <constraint firstAttribute="trailing" secondItem="SUB-lbl-001" secondAttribute="trailing" constant="10" id="SUB-tr-001"/> 108 <constraint firstAttribute="trailing" secondItem="SUB-lbl-001" secondAttribute="trailing" constant="10" id="SUB-tr-001"/>
126 - <!-- Expiration pinned to bottom -->
127 <constraint firstAttribute="bottom" secondItem="EXP-lbl-001" secondAttribute="bottom" constant="10" id="EXP-b-001"/> 109 <constraint firstAttribute="bottom" secondItem="EXP-lbl-001" secondAttribute="bottom" constant="10" id="EXP-b-001"/>
128 <constraint firstItem="EXP-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="EXP-l-001"/> 110 <constraint firstItem="EXP-lbl-001" firstAttribute="leading" secondItem="BTM-vw-001" secondAttribute="leading" constant="10" id="EXP-l-001"/>
129 <constraint firstAttribute="trailing" secondItem="EXP-lbl-001" secondAttribute="trailing" constant="10" id="EXP-tr-001"/> 111 <constraint firstAttribute="trailing" secondItem="EXP-lbl-001" secondAttribute="trailing" constant="10" id="EXP-tr-001"/>
...@@ -132,11 +114,9 @@ ...@@ -132,11 +114,9 @@
132 </subviews> 114 </subviews>
133 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 115 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
134 <constraints> 116 <constraints>
135 - <!-- Top view pinned to top -->
136 <constraint firstItem="TOP-vw-001" firstAttribute="top" secondItem="A1B-CD-EFG" secondAttribute="top" id="TOP-t-p-001"/> 117 <constraint firstItem="TOP-vw-001" firstAttribute="top" secondItem="A1B-CD-EFG" secondAttribute="top" id="TOP-t-p-001"/>
137 <constraint firstItem="TOP-vw-001" firstAttribute="leading" secondItem="A1B-CD-EFG" secondAttribute="leading" id="TOP-l-p-001"/> 118 <constraint firstItem="TOP-vw-001" firstAttribute="leading" secondItem="A1B-CD-EFG" secondAttribute="leading" id="TOP-l-p-001"/>
138 <constraint firstAttribute="trailing" secondItem="TOP-vw-001" secondAttribute="trailing" id="TOP-tr-p-001"/> 119 <constraint firstAttribute="trailing" secondItem="TOP-vw-001" secondAttribute="trailing" id="TOP-tr-p-001"/>
139 - <!-- Bottom view below top view -->
140 <constraint firstItem="BTM-vw-001" firstAttribute="top" secondItem="TOP-vw-001" secondAttribute="bottom" id="BTM-t-p-001"/> 120 <constraint firstItem="BTM-vw-001" firstAttribute="top" secondItem="TOP-vw-001" secondAttribute="bottom" id="BTM-t-p-001"/>
141 <constraint firstItem="BTM-vw-001" firstAttribute="leading" secondItem="A1B-CD-EFG" secondAttribute="leading" id="BTM-l-p-001"/> 121 <constraint firstItem="BTM-vw-001" firstAttribute="leading" secondItem="A1B-CD-EFG" secondAttribute="leading" id="BTM-l-p-001"/>
142 <constraint firstAttribute="trailing" secondItem="BTM-vw-001" secondAttribute="trailing" id="BTM-tr-p-001"/> 122 <constraint firstAttribute="trailing" secondItem="BTM-vw-001" secondAttribute="trailing" id="BTM-tr-p-001"/>
......