I was able to solve this by just adding width and height constraints and setting the content mode of the ImageView to AspectFill. If the launch image is from the asset catalog then iOS will automatically pick the right image. The final storyboard XML should look something like this:
<scene sceneID="914">
<objects>
<viewController id="915" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="912"/>
<viewControllerLayoutGuide type="bottom" id="913"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="916">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="919" translatesAutoresizingMaskIntoConstraints="NO" misplaced="YES" ambiguous="YES" image="LaunchImages">
<rect key="frame" x="87" y="292" width="414" height="736"/>
</imageView>
</subviews>
<constraints>
<constraint id="921" firstItem="919" firstAttribute="height" secondItem="916" secondAttribute="height"/>
<constraint id="922" firstItem="919" firstAttribute="width" secondItem="916" secondAttribute="width"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="917" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-197" y="-378"/>
</scene>