Skip to content

Commit 04f9c79

Browse files
authored
Better fix for #159 (#199)
Fixes #130 Better use of space on iPhone SE and iPhone 7 Plus
1 parent 02cf86b commit 04f9c79

File tree

5 files changed

+56
-27
lines changed

5 files changed

+56
-27
lines changed

Loop/Base.lproj/Main.storyboard

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
1919
<prototypes>
2020
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="SwitchTableViewCell" id="vah-ss-3Ud" customClass="SwitchTableViewCell" customModule="Loop" customModuleProvider="target">
21-
<rect key="frame" x="0.0" y="120" width="320" height="44"/>
21+
<rect key="frame" x="0.0" y="119.5" width="320" height="44"/>
2222
<autoresizingMask key="autoresizingMask"/>
2323
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="vah-ss-3Ud" id="D0A-EB-kmz">
2424
<frame key="frameInset" width="320" height="43"/>
@@ -32,9 +32,9 @@
3232
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="guo-4Z-RoO"/>
3333
</subviews>
3434
<constraints>
35-
<constraint firstItem="moR-fS-DWR" firstAttribute="leading" secondItem="D0A-EB-kmz" secondAttribute="leadingMargin" constant="7" id="3Zc-7R-Uft"/>
35+
<constraint firstItem="moR-fS-DWR" firstAttribute="leading" secondItem="D0A-EB-kmz" secondAttribute="leadingMargin" id="3Zc-7R-Uft"/>
3636
<constraint firstItem="moR-fS-DWR" firstAttribute="top" secondItem="D0A-EB-kmz" secondAttribute="topMargin" id="Sa2-TB-EcZ"/>
37-
<constraint firstAttribute="trailingMargin" secondItem="guo-4Z-RoO" secondAttribute="trailing" constant="7" id="gb5-W2-roe"/>
37+
<constraint firstAttribute="trailingMargin" secondItem="guo-4Z-RoO" secondAttribute="trailing" id="gb5-W2-roe"/>
3838
<constraint firstAttribute="bottomMargin" secondItem="moR-fS-DWR" secondAttribute="bottom" priority="750" id="j5I-H8-Otk"/>
3939
<constraint firstItem="guo-4Z-RoO" firstAttribute="leading" secondItem="moR-fS-DWR" secondAttribute="trailing" constant="8" symbolic="YES" id="tzW-RW-90H"/>
4040
<constraint firstItem="guo-4Z-RoO" firstAttribute="centerY" secondItem="D0A-EB-kmz" secondAttribute="centerY" id="w98-m4-irJ"/>
@@ -46,21 +46,21 @@
4646
</connections>
4747
</tableViewCell>
4848
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="ConfigTableViewCell" textLabel="5TX-kX-nBo" detailTextLabel="m9c-SQ-djE" style="IBUITableViewCellStyleValue1" id="0EG-OG-YuT">
49-
<rect key="frame" x="0.0" y="164" width="320" height="44"/>
49+
<rect key="frame" x="0.0" y="163.5" width="320" height="44"/>
5050
<autoresizingMask key="autoresizingMask"/>
5151
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="0EG-OG-YuT" id="af2-sZ-CY0">
52-
<frame key="frameInset" width="287" height="43"/>
52+
<frame key="frameInset" width="287" height="43.5"/>
5353
<autoresizingMask key="autoresizingMask"/>
5454
<subviews>
5555
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Pump ID" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5TX-kX-nBo">
56-
<frame key="frameInset" minX="15" minY="11" width="65" height="21"/>
56+
<frame key="frameInset" minX="15" minY="12" width="65" height="20.5"/>
5757
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
5858
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
5959
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
6060
<nil key="highlightedColor"/>
6161
</label>
6262
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Tap to set" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="m9c-SQ-djE">
63-
<frame key="frameInset" minX="209" minY="11" width="76" height="21"/>
63+
<frame key="frameInset" minX="209" minY="12" width="76" height="20.5"/>
6464
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
6565
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
6666
<color key="textColor" red="0.55676333109537768" green="0.55676333109537768" blue="0.55676333109537768" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -123,7 +123,7 @@
123123
<rect key="frame" x="0.0" y="92" width="320" height="270"/>
124124
<autoresizingMask key="autoresizingMask"/>
125125
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mQk-9D-0ub" id="B1i-Pw-wSw">
126-
<frame key="frameInset" width="320" height="269"/>
126+
<frame key="frameInset" width="320" height="269.5"/>
127127
<autoresizingMask key="autoresizingMask"/>
128128
<subviews>
129129
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FBL-RL-faM" customClass="ChartContentView" customModule="Loop" customModuleProvider="target">
@@ -165,7 +165,7 @@
165165
<rect key="frame" x="0.0" y="362" width="320" height="64"/>
166166
<autoresizingMask key="autoresizingMask"/>
167167
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Xc2-a9-ojZ" id="a4h-tq-Rnl">
168-
<frame key="frameInset" width="320" height="63"/>
168+
<frame key="frameInset" width="320" height="63.5"/>
169169
<autoresizingMask key="autoresizingMask"/>
170170
<subviews>
171171
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" verticalCompressionResistancePriority="751" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bIL-Ub-qYp">
@@ -197,7 +197,7 @@
197197
<rect key="frame" x="0.0" y="426" width="320" height="64"/>
198198
<autoresizingMask key="autoresizingMask"/>
199199
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="I71-cY-0y7" id="0f9-ja-YFt">
200-
<frame key="frameInset" width="320" height="63"/>
200+
<frame key="frameInset" width="320" height="63.5"/>
201201
<autoresizingMask key="autoresizingMask"/>
202202
<subviews>
203203
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="249" verticalHuggingPriority="252" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zbc-87-wxZ">
@@ -662,7 +662,7 @@
662662
<rect key="frame" x="0.0" y="99" width="320" height="44"/>
663663
<autoresizingMask key="autoresizingMask"/>
664664
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="DoN-m5-O7j" id="3OB-7U-Jvb">
665-
<frame key="frameInset" width="320" height="43"/>
665+
<frame key="frameInset" width="320" height="43.5"/>
666666
<autoresizingMask key="autoresizingMask"/>
667667
<subviews>
668668
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Recommended" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ywT-OR-NnU">
@@ -704,7 +704,7 @@
704704
<rect key="frame" x="0.0" y="143" width="320" height="44"/>
705705
<autoresizingMask key="autoresizingMask"/>
706706
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="us0-UE-Wqz" id="2fI-OE-GLU">
707-
<frame key="frameInset" width="320" height="43"/>
707+
<frame key="frameInset" width="320" height="43.5"/>
708708
<autoresizingMask key="autoresizingMask"/>
709709
<subviews>
710710
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Bolus" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5oA-6d-ZTL">
@@ -745,7 +745,7 @@
745745
<rect key="frame" x="0.0" y="187" width="320" height="44"/>
746746
<autoresizingMask key="autoresizingMask"/>
747747
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="efV-tT-gC9" id="nq8-dv-ceA">
748-
<frame key="frameInset" width="320" height="43"/>
748+
<frame key="frameInset" width="320" height="43.5"/>
749749
<autoresizingMask key="autoresizingMask"/>
750750
<subviews>
751751
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ya0-9b-ZAS">

Loop/Managers/StatusChartManager.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,15 @@ final class StatusChartsManager {
7474

7575
var startDate = Date()
7676

77-
var glucoseUnit: HKUnit = HKUnit.milligramsPerDeciliterUnit()
77+
var glucoseUnit: HKUnit = HKUnit.milligramsPerDeciliterUnit() {
78+
didSet {
79+
if glucoseUnit != oldValue {
80+
// Regenerate the glucose display points
81+
let oldRange = glucoseDisplayRange
82+
glucoseDisplayRange = oldRange
83+
}
84+
}
85+
}
7886

7987
var glucoseTargetRangeSchedule: GlucoseRangeSchedule?
8088

Loop/View Controllers/SettingsTableViewController.swift

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,9 @@ final class SettingsTableViewController: UITableViewController, DailyValueSchedu
203203

204204
if let carbRatioSchedule = dataManager.carbRatioSchedule {
205205
let unit = carbRatioSchedule.unit
206-
let value = carbRatioSchedule.averageQuantity().doubleValue(for: unit)
206+
let value = valueNumberFormatter.string(from: NSNumber(value: carbRatioSchedule.averageQuantity().doubleValue(for: unit))) ?? ""
207207

208-
configCell.detailTextLabel?.text = "\(valueNumberFormatter.string(from: NSNumber(value: value))!) \(unit)/U"
208+
configCell.detailTextLabel?.text = String(format: NSLocalizedString("%1$@ %2$@/U", comment: "Format string for carb ratio average. (1: value)(2: carb unit)"), value, unit)
209209
} else {
210210
configCell.detailTextLabel?.text = TapToSetString
211211
}
@@ -214,9 +214,9 @@ final class SettingsTableViewController: UITableViewController, DailyValueSchedu
214214

215215
if let insulinSensitivitySchedule = dataManager.insulinSensitivitySchedule {
216216
let unit = insulinSensitivitySchedule.unit
217-
let value = insulinSensitivitySchedule.averageQuantity().doubleValue(for: unit)
217+
let value = valueNumberFormatter.string(from: NSNumber(value: insulinSensitivitySchedule.averageQuantity().doubleValue(for: unit))) ?? ""
218218

219-
configCell.detailTextLabel?.text = "\(valueNumberFormatter.string(from: NSNumber(value: value))!) \(unit)/U"
219+
configCell.detailTextLabel?.text = String(format: NSLocalizedString("%1$@ %2$@/U", comment: "Format string for insulin sensitivity average (1: value)(2: glucose unit)"), value, unit.glucoseUnitDisplayString)
220220
} else {
221221
configCell.detailTextLabel?.text = TapToSetString
222222
}
@@ -226,17 +226,22 @@ final class SettingsTableViewController: UITableViewController, DailyValueSchedu
226226
if let glucoseTargetRangeSchedule = dataManager.glucoseTargetRangeSchedule {
227227
let unit = glucoseTargetRangeSchedule.unit
228228
let value = glucoseTargetRangeSchedule.value(at: Date())
229+
let minTarget = valueNumberFormatter.string(from: NSNumber(value: value.minValue)) ?? ""
230+
let maxTarget = valueNumberFormatter.string(from: NSNumber(value: value.maxValue)) ?? ""
229231

230-
configCell.detailTextLabel?.text = "\(valueNumberFormatter.string(from: NSNumber(value: value.minValue))!)\(valueNumberFormatter.string(from: NSNumber(value: value.maxValue))!) \(unit)"
232+
configCell.detailTextLabel?.text = String(format: NSLocalizedString("%1$@ – %2$@ %3$@", comment: "Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit)"), minTarget, maxTarget, unit.glucoseUnitDisplayString)
231233
} else {
232234
configCell.detailTextLabel?.text = TapToSetString
233235
}
234236
case .insulinActionDuration:
235237
configCell.textLabel?.text = NSLocalizedString("Insulin Action Duration", comment: "The title text for the insulin action duration value")
236238

237239
if let insulinActionDuration = dataManager.insulinActionDuration {
240+
let formatter = DateComponentsFormatter()
241+
formatter.allowsFractionalUnits = true
242+
formatter.allowedUnits = [.hour]
238243

239-
configCell.detailTextLabel?.text = "\(insulinActionDuration.hours) hours"
244+
configCell.detailTextLabel?.text = formatter.string(from: insulinActionDuration)
240245
} else {
241246
configCell.detailTextLabel?.text = TapToSetString
242247
}

Loop/View Controllers/StatusTableViewController.swift

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,6 @@ final class StatusTableViewController: UITableViewController, UIGestureRecognize
145145
components.minute = 0
146146
let date = Date(timeIntervalSinceNow: -TimeInterval(hours: max(1, historyHours)))
147147
charts.startDate = Calendar.current.nextDate(after: date, matching: components, matchingPolicy: .strict, direction: .backward) ?? date
148-
charts.glucoseDisplayRange = (
149-
min: HKQuantity(unit: HKUnit.milligramsPerDeciliterUnit(), doubleValue: 100),
150-
max: HKQuantity(unit: HKUnit.milligramsPerDeciliterUnit(), doubleValue: 175)
151-
)
152148

153149
let reloadGroup = DispatchGroup()
154150
let oldRecommendedTempBasal = self.recommendedTempBasal
@@ -321,7 +317,16 @@ final class StatusTableViewController: UITableViewController, UIGestureRecognize
321317
static let count = 4
322318
}
323319

324-
private let charts = StatusChartsManager()
320+
private lazy var charts: StatusChartsManager = {
321+
let charts = StatusChartsManager()
322+
323+
charts.glucoseDisplayRange = (
324+
min: HKQuantity(unit: HKUnit.milligramsPerDeciliterUnit(), doubleValue: 100),
325+
max: HKQuantity(unit: HKUnit.milligramsPerDeciliterUnit(), doubleValue: 175)
326+
)
327+
328+
return charts
329+
}()
325330

326331
// MARK: Glucose
327332

@@ -558,11 +563,15 @@ final class StatusTableViewController: UITableViewController, UIGestureRecognize
558563
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
559564
switch Section(rawValue: indexPath.section)! {
560565
case .charts:
566+
// 20: Status bar
567+
// 44: Toolbar
568+
let availableSize = max(tableView.bounds.width, tableView.bounds.height) - 20 - (tableView.tableHeaderView?.frame.height ?? 0) - 44
569+
561570
switch ChartRow(rawValue: indexPath.row)! {
562571
case .glucose:
563-
return 180
572+
return max(100, 0.37 * availableSize)
564573
case .iob, .dose, .cob:
565-
return 110
574+
return max(100, 0.21 * availableSize)
566575
}
567576
case .status:
568577
return UITableViewAutomaticDimension

Loop/Views/SwitchTableViewCell.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ final class SwitchTableViewCell: UITableViewCell {
1717

1818
@IBOutlet var `switch`: UISwitch?
1919

20+
override func layoutSubviews() {
21+
super.layoutSubviews()
22+
23+
contentView.layoutMargins.left = separatorInset.left
24+
contentView.layoutMargins.right = separatorInset.left
25+
}
26+
2027
override func prepareForReuse() {
2128
super.prepareForReuse()
2229

0 commit comments

Comments
 (0)