mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2025-07-01 15:26:11 +00:00
Added support for native stream resolution
This commit is contained in:
parent
77c6ca2993
commit
7f7770a42c
@ -626,10 +626,10 @@ const int FrontViewPositionNone = 0xff;
|
||||
_frontViewPosition = FrontViewPositionLeft;
|
||||
_rearViewPosition = FrontViewPositionLeft;
|
||||
_rightViewPosition = FrontViewPositionLeft;
|
||||
_rearViewRevealWidth = 260.0f;
|
||||
_rearViewRevealWidth = 510.0f;
|
||||
_rearViewRevealOverdraw = 60.0f;
|
||||
_rearViewRevealDisplacement = 40.0f;
|
||||
_rightViewRevealWidth = 260.0f;
|
||||
_rightViewRevealWidth = 510.0f;
|
||||
_rightViewRevealOverdraw = 60.0f;
|
||||
_rightViewRevealDisplacement = 40.0f;
|
||||
_bounceBackOnOverdraw = YES;
|
||||
|
@ -146,10 +146,17 @@ static const int bitrateTable[] = {
|
||||
resolution = 2;
|
||||
break;
|
||||
case 2160:
|
||||
resolution = 3;
|
||||
resolution = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
// because switch case doesn't work with "expression"
|
||||
if ([currentSettings.height integerValue] == [self getMainScreenHeight]) {
|
||||
resolution = 3;
|
||||
}
|
||||
|
||||
NSString *newTitle = [NSString stringWithFormat:@"%dx%d", (int) self.getMainScreenWidth, (int) self.getMainScreenHeight];
|
||||
[self.resolutionSelector setTitle:newTitle forSegmentAtIndex:3];
|
||||
|
||||
// Only show the 120 FPS option if we have a > 60-ish Hz display
|
||||
bool enable120Fps = false;
|
||||
if (@available(iOS 10.3, tvOS 10.3, *)) {
|
||||
@ -165,11 +172,11 @@ static const int bitrateTable[] = {
|
||||
// they support HEVC decoding (A9 or later).
|
||||
if (@available(iOS 11.0, tvOS 11.0, *)) {
|
||||
if (!VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
||||
[self.resolutionSelector removeSegmentAtIndex:3 animated:NO];
|
||||
[self.resolutionSelector removeSegmentAtIndex:4 animated:NO];
|
||||
}
|
||||
}
|
||||
else {
|
||||
[self.resolutionSelector removeSegmentAtIndex:3 animated:NO];
|
||||
[self.resolutionSelector removeSegmentAtIndex:4 animated:NO];
|
||||
}
|
||||
|
||||
// Disable the HEVC selector if HEVC is not supported by the hardware
|
||||
@ -281,14 +288,54 @@ static const int bitrateTable[] = {
|
||||
}
|
||||
}
|
||||
|
||||
- (UIEdgeInsets) getSafeAreaInsets {
|
||||
if (@available(iOS 11.0, *)) {
|
||||
return UIApplication.sharedApplication.keyWindow.safeAreaInsets;
|
||||
} else {
|
||||
// todo: find a way to calculate the safe area for previous version
|
||||
return UIEdgeInsetsMake(0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (NSInteger) getMainScreenHeight {
|
||||
CGFloat scale = UIScreen.mainScreen.scale;
|
||||
UIEdgeInsets insets = [self getSafeAreaInsets];
|
||||
CGFloat top = insets.top;
|
||||
CGFloat bottom = insets.bottom;
|
||||
CGFloat height = UIScreen.mainScreen.bounds.size.height;
|
||||
|
||||
return scale * (height - top - bottom);
|
||||
}
|
||||
|
||||
- (NSInteger) getMainScreenWidth {
|
||||
CGFloat scale = UIScreen.mainScreen.scale;
|
||||
UIEdgeInsets insets = [self getSafeAreaInsets];
|
||||
CGFloat left = insets.left;
|
||||
CGFloat right = insets.right;
|
||||
CGFloat width = UIScreen.mainScreen.bounds.size.width;
|
||||
|
||||
return scale * (width - left - right);
|
||||
}
|
||||
|
||||
- (NSInteger) getChosenStreamHeight {
|
||||
const int resolutionTable[] = { 360, 720, 1080, 2160 };
|
||||
const int mainScreenHeight = (int)[self getMainScreenHeight];
|
||||
const int resolutionTable[] = { 360, 720, 1080, mainScreenHeight, 2160 };
|
||||
|
||||
return resolutionTable[[self.resolutionSelector selectedSegmentIndex]];
|
||||
}
|
||||
|
||||
- (NSInteger) getChosenStreamWidth {
|
||||
// Assumes fixed 16:9 aspect ratio
|
||||
return ([self getChosenStreamHeight] * 16) / 9;
|
||||
const NSInteger choosenHeight = [self getChosenStreamHeight];
|
||||
switch (choosenHeight) {
|
||||
case 360:
|
||||
case 720:
|
||||
case 1080:
|
||||
case 2160:
|
||||
// Assumes fixed 16:9 aspect ratio
|
||||
return choosenHeight * 16 / 9;
|
||||
default:
|
||||
return [self getMainScreenWidth];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) saveSettings {
|
||||
|
@ -71,12 +71,13 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="ckc-Dm-8ex">
|
||||
<rect key="frame" x="16" y="49" width="209" height="29"/>
|
||||
<rect key="frame" x="16" y="49" width="459" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="360p"/>
|
||||
<segment title="720p"/>
|
||||
<segment title="1080p"/>
|
||||
<segment title="Native"/>
|
||||
<segment title="4K"/>
|
||||
</segments>
|
||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@ -91,7 +92,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="lGK-vl-pdw">
|
||||
<rect key="frame" x="16" y="114" width="209" height="29"/>
|
||||
<rect key="frame" x="16" y="114" width="459" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="30 FPS"/>
|
||||
@ -110,7 +111,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="20" minValue="1" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="JAY-nj-UNz">
|
||||
<rect key="frame" x="14" y="179" width="213" height="31"/>
|
||||
<rect key="frame" x="14" y="179" width="459" height="31"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</slider>
|
||||
@ -122,7 +123,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="e4G-id-vjI" userLabel="Touch Mode Selector">
|
||||
<rect key="frame" x="16" y="237" width="209" height="32"/>
|
||||
<rect key="frame" x="16" y="237" width="459" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Touchpad"/>
|
||||
@ -140,7 +141,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="qSU-wh-tqA">
|
||||
<rect key="frame" x="16" y="305" width="209" height="29"/>
|
||||
<rect key="frame" x="16" y="305" width="459" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Off"/>
|
||||
@ -159,7 +160,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="nCO-OT-dV1" userLabel="Optimize Settings Selector">
|
||||
<rect key="frame" x="16" y="370" width="209" height="28"/>
|
||||
<rect key="frame" x="16" y="370" width="459" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -176,7 +177,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="KlC-fG-wEi" userLabel="MC Selector">
|
||||
<rect key="frame" x="16" y="435" width="209" height="28"/>
|
||||
<rect key="frame" x="16" y="435" width="459" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Single"/>
|
||||
@ -193,7 +194,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="WDY-9o-6Hb" userLabel="PC Audio Selector">
|
||||
<rect key="frame" x="16" y="500" width="209" height="28"/>
|
||||
<rect key="frame" x="16" y="500" width="459" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -210,7 +211,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="aFy-0w-YPe" userLabel="HEVC Selector">
|
||||
<rect key="frame" x="16" y="565" width="209" height="28"/>
|
||||
<rect key="frame" x="16" y="565" width="459" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -227,7 +228,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="7va-uJ-IfD" userLabel="framePacingSelector">
|
||||
<rect key="frame" x="16" y="629" width="209" height="28"/>
|
||||
<rect key="frame" x="16" y="629" width="459" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Latency"/>
|
||||
@ -244,7 +245,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="KMg-3j-F9p" userLabel="Citrix X1 Selector">
|
||||
<rect key="frame" x="16" y="693" width="209" height="28"/>
|
||||
<rect key="frame" x="16" y="693" width="459" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -261,7 +262,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="NLH-qN-qCo" userLabel="Statistics Overlay Selector">
|
||||
<rect key="frame" x="16" y="757" width="209" height="28"/>
|
||||
<rect key="frame" x="16" y="757" width="459" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
|
@ -93,12 +93,13 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="PCM-t4-Sha">
|
||||
<rect key="frame" x="16" y="49" width="200" height="29"/>
|
||||
<rect key="frame" x="16" y="49" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="360p"/>
|
||||
<segment title="720p"/>
|
||||
<segment title="1080p"/>
|
||||
<segment title="Native"/>
|
||||
<segment title="4K"/>
|
||||
</segments>
|
||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
@ -112,7 +113,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="dLF-qJ-2nY">
|
||||
<rect key="frame" x="16" y="114" width="200" height="29"/>
|
||||
<rect key="frame" x="16" y="114" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="30 FPS"/>
|
||||
@ -130,7 +131,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="20" minValue="1" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="3nn-MI-9Xu">
|
||||
<rect key="frame" x="14" y="179" width="204" height="31"/>
|
||||
<rect key="frame" x="14" y="179" width="450" height="31"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</slider>
|
||||
@ -142,7 +143,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="2lg-HW-tku" userLabel="Touch Mode Selector">
|
||||
<rect key="frame" x="17" y="245" width="200" height="32"/>
|
||||
<rect key="frame" x="17" y="245" width="450" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Touchpad"/>
|
||||
@ -159,7 +160,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="WGf-9d-eAm">
|
||||
<rect key="frame" x="20" y="313" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="313" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Off"/>
|
||||
@ -178,7 +179,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="Gob-Lu-b1y" userLabel="Optimize Settings Selector">
|
||||
<rect key="frame" x="20" y="378" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="378" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -195,7 +196,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="1" translatesAutoresizingMaskIntoConstraints="NO" id="OCT-oL-Dqb" userLabel="MC Selector">
|
||||
<rect key="frame" x="20" y="443" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="443" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Single"/>
|
||||
@ -212,7 +213,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="8GA-Js-kQN" userLabel="PC Audio Selector">
|
||||
<rect key="frame" x="20" y="508" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="508" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -229,7 +230,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="AbS-CW-fjP" userLabel="HEVC Selector">
|
||||
<rect key="frame" x="20" y="573" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="573" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -246,7 +247,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="d2a-Ka-H2c" userLabel="Frame Pacing Selector">
|
||||
<rect key="frame" x="20" y="638" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="638" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Latency"/>
|
||||
@ -263,7 +264,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="o4O-hO-teB" userLabel="Citrix X1 Selector">
|
||||
<rect key="frame" x="20" y="703" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="703" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
@ -280,7 +281,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="rdz-eg-2oR" userLabel="Statistics Overlay Selector">
|
||||
<rect key="frame" x="20" y="768" width="200" height="29"/>
|
||||
<rect key="frame" x="20" y="768" width="450" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="No"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user