Merge branch 'iOS26UI' into Integration
This commit is contained in:
commit
2c787a8d77
14 files changed
+253
-147
No files matched your search
@@ -3171,7 +3171,7 @@
|
|||||||
<constraint firstAttribute="height" constant="44" id="lQr-5u-g05"/>
|
<constraint firstAttribute="height" constant="44" id="lQr-5u-g05"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<items>
|
<items>
|
||||||
<navigationItem title="Widget Profiles" id="Q2V-XF-4jq">
|
<navigationItem title="Widget Profiles" largeTitleDisplayMode="never" style="editor" id="Q2V-XF-4jq">
|
||||||
<leftBarButtonItems>
|
<leftBarButtonItems>
|
||||||
<barButtonItem title="ExportAll" width="70" style="plain" id="Bhn-IO-Wlt" userLabel="Export Data">
|
<barButtonItem title="ExportAll" width="70" style="plain" id="Bhn-IO-Wlt" userLabel="Export Data">
|
||||||
<connections>
|
<connections>
|
||||||
@@ -3221,12 +3221,13 @@
|
|||||||
<size key="freeformSize" width="1133" height="744"/>
|
<size key="freeformSize" width="1133" height="744"/>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="profileTableViewNavigationBar" destination="62V-DN-FUk" id="c3i-qa-4ix"/>
|
<outlet property="profileTableViewNavigationBar" destination="62V-DN-FUk" id="c3i-qa-4ix"/>
|
||||||
|
<outlet property="profileTableViewNavigationItem" destination="Q2V-XF-4jq" id="TmF-ZM-NKC"/>
|
||||||
<outlet property="tableView" destination="BA3-hd-bDp" id="Jzl-sP-ANp"/>
|
<outlet property="tableView" destination="BA3-hd-bDp" id="Jzl-sP-ANp"/>
|
||||||
</connections>
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="K4u-Tz-tXU" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="K4u-Tz-tXU" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="3742" y="955"/>
|
<point key="canvasLocation" x="3712" y="958"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
+25
-25
@@ -62,7 +62,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
computerIconMonitorCenterYOffset = [self isIPhone] ? -2.75*_sizeFactor : -3.2*_sizeFactor;
|
computerIconMonitorCenterYOffset = [self isIPhone] ? -2.75*_sizeFactor : -3.2*_sizeFactor;
|
||||||
iconAndButtonSpacing = 37*_sizeFactor;
|
iconAndButtonSpacing = 37*_sizeFactor;
|
||||||
buttonHeight = 39*_sizeFactor;
|
buttonHeight = 39*_sizeFactor;
|
||||||
defaultBlue = [ThemeManager appPrimaryColor];
|
defaultBlue = ThemeManager.appPrimaryColor;
|
||||||
defaultGreen = [UIColor colorWithRed:52.0/255.0 green:199.0/255.0 blue:89.0/255.0 alpha:1.0];
|
defaultGreen = [UIColor colorWithRed:52.0/255.0 green:199.0/255.0 blue:89.0/255.0 alpha:1.0];
|
||||||
// self.userIterfaceStyle = UIUserInterfaceStyleLight
|
// self.userIterfaceStyle = UIUserInterfaceStyleLight
|
||||||
|
|
||||||
@@ -165,7 +165,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
|
|
||||||
- (void)setupUI {
|
- (void)setupUI {
|
||||||
self.userInteractionEnabled = YES;
|
self.userInteractionEnabled = YES;
|
||||||
self.backgroundColor = [ThemeManager widgetBackgroundColor]; // theme
|
self.backgroundColor = ThemeManager.widgetBackgroundColor; // theme
|
||||||
self.cardContentpadding = 13 * _sizeFactor;
|
self.cardContentpadding = 13 * _sizeFactor;
|
||||||
self.clipsToBounds = YES;
|
self.clipsToBounds = YES;
|
||||||
self.translatesAutoresizingMaskIntoConstraints = NO;
|
self.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
@@ -296,7 +296,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
self.appButton.translatesAutoresizingMaskIntoConstraints = NO;
|
self.appButton.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
self.appButton.frame = CGRectMake(20, 200, 150, buttonHeight);
|
self.appButton.frame = CGRectMake(20, 200, 150, buttonHeight);
|
||||||
[self.appButton setTitle:[LocalizationHelper localizedStringForKey:@"Applications"] forState:UIControlStateNormal];
|
[self.appButton setTitle:[LocalizationHelper localizedStringForKey:@"Applications"] forState:UIControlStateNormal];
|
||||||
[self.appButton setTitleColor:[ThemeManager textColorGray] forState:UIControlStateNormal]; //theme
|
[self.appButton setTitleColor:ThemeManager.textColorGray forState:UIControlStateNormal]; //theme
|
||||||
self.appButton.titleLabel.font = [UIFont systemFontOfSize:buttonLabelFontSize];
|
self.appButton.titleLabel.font = [UIFont systemFontOfSize:buttonLabelFontSize];
|
||||||
[self.appButton addTarget:self action:@selector(appButtonTapped) forControlEvents:UIControlEventPrimaryActionTriggered];
|
[self.appButton addTarget:self action:@selector(appButtonTapped) forControlEvents:UIControlEventPrimaryActionTriggered];
|
||||||
[self addSubview:self.appButton];
|
[self addSubview:self.appButton];
|
||||||
@@ -343,7 +343,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
self.pairButton = [UIButton buttonWithType:UIButtonTypeSystem];
|
self.pairButton = [UIButton buttonWithType:UIButtonTypeSystem];
|
||||||
self.pairButton.translatesAutoresizingMaskIntoConstraints = NO;
|
self.pairButton.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
self.pairButton.frame = CGRectMake(0, 0, 150, 50);
|
self.pairButton.frame = CGRectMake(0, 0, 150, 50);
|
||||||
self.pairButton.backgroundColor = [ThemeManager textTintColorWithAlpha];
|
self.pairButton.backgroundColor = ThemeManager.textTintColorWithAlpha;
|
||||||
self.pairButton.layer.cornerRadius = 2*(uint16_t)(cardWidth*0.0377/2);
|
self.pairButton.layer.cornerRadius = 2*(uint16_t)(cardWidth*0.0377/2);
|
||||||
[self.pairButton setTitle:[LocalizationHelper localizedStringForKey:@" Pair with PIN"] forState:UIControlStateNormal];
|
[self.pairButton setTitle:[LocalizationHelper localizedStringForKey:@" Pair with PIN"] forState:UIControlStateNormal];
|
||||||
[self.pairButton setTitleColor:defaultBlue forState:UIControlStateNormal]; // theme
|
[self.pairButton setTitleColor:defaultBlue forState:UIControlStateNormal]; // theme
|
||||||
@@ -356,7 +356,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
} else {
|
} else {
|
||||||
// Fallback on earlier versions
|
// Fallback on earlier versions
|
||||||
}
|
}
|
||||||
self.pairButton.backgroundColor = [ThemeManager textTintColorWithAlpha];
|
self.pairButton.backgroundColor = ThemeManager.textTintColorWithAlpha;
|
||||||
[self.pairButton setTitleColor:defaultBlue forState:UIControlStateNormal]; // theme
|
[self.pairButton setTitleColor:defaultBlue forState:UIControlStateNormal]; // theme
|
||||||
|
|
||||||
[self.pairButton addTarget:self action:@selector(pairButtonTapped) forControlEvents:UIControlEventPrimaryActionTriggered];
|
[self.pairButton addTarget:self action:@selector(pairButtonTapped) forControlEvents:UIControlEventPrimaryActionTriggered];
|
||||||
@@ -377,7 +377,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
self.wakeupButton = [UIButton buttonWithType:UIButtonTypeSystem];
|
self.wakeupButton = [UIButton buttonWithType:UIButtonTypeSystem];
|
||||||
self.wakeupButton.translatesAutoresizingMaskIntoConstraints = NO;
|
self.wakeupButton.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
self.wakeupButton.frame = CGRectMake(0, 0, 150, 50);
|
self.wakeupButton.frame = CGRectMake(0, 0, 150, 50);
|
||||||
self.wakeupButton.backgroundColor = [ThemeManager textTintColorWithAlpha];
|
self.wakeupButton.backgroundColor = ThemeManager.textTintColorWithAlpha;
|
||||||
self.wakeupButton.layer.cornerRadius = 2*(uint16_t)(cardWidth*0.0377/2);
|
self.wakeupButton.layer.cornerRadius = 2*(uint16_t)(cardWidth*0.0377/2);
|
||||||
[self.wakeupButton setTitle:[LocalizationHelper localizedStringForKey:@" Wake-on-LAN"] forState:UIControlStateNormal];
|
[self.wakeupButton setTitle:[LocalizationHelper localizedStringForKey:@" Wake-on-LAN"] forState:UIControlStateNormal];
|
||||||
[self.wakeupButton setTitleColor:defaultBlue forState:UIControlStateNormal]; // theme
|
[self.wakeupButton setTitleColor:defaultBlue forState:UIControlStateNormal]; // theme
|
||||||
@@ -472,10 +472,10 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
|
|
||||||
|
|
||||||
- (void)updateTheme {
|
- (void)updateTheme {
|
||||||
self.backgroundColor = [ThemeManager widgetBackgroundColor];
|
self.backgroundColor = ThemeManager.widgetBackgroundColor;
|
||||||
_hostNameLabel.textColor = [ThemeManager textColor];
|
_hostNameLabel.textColor = ThemeManager.textColor;
|
||||||
[_appButton setTitleColor:[ThemeManager appPrimaryColor] forState:UIControlStateNormal];
|
[_appButton setTitleColor:ThemeManager.appPrimaryColor forState:UIControlStateNormal];
|
||||||
_separatorLine.backgroundColor = [ThemeManager separatorColor];
|
_separatorLine.backgroundColor = ThemeManager.hostCardSeparatorColor;
|
||||||
|
|
||||||
backgroundLayer.hidden = NO;
|
backgroundLayer.hidden = NO;
|
||||||
[self updateBackgroundLayerTheme];
|
[self updateBackgroundLayerTheme];
|
||||||
@@ -560,7 +560,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
[_launchButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; // theme
|
[_launchButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; // theme
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_iconBackgroundView.backgroundColor = [ThemeManager appPrimaryColorWithAlpha];
|
_iconBackgroundView.backgroundColor = ThemeManager.appPrimaryColorWithAlpha;
|
||||||
UIColor* iconColor = [[UIColor whiteColor] colorWithAlphaComponent:[self isDarkTheme] ? 0.63 : 1];
|
UIColor* iconColor = [[UIColor whiteColor] colorWithAlphaComponent:[self isDarkTheme] ? 0.63 : 1];
|
||||||
_hostIconView.tintColor = iconColor;
|
_hostIconView.tintColor = iconColor;
|
||||||
lockIconView.tintColor = iconColor;
|
lockIconView.tintColor = iconColor;
|
||||||
@@ -574,18 +574,18 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
case StateOffline:
|
case StateOffline:
|
||||||
[_hostSpinner stopAnimating];
|
[_hostSpinner stopAnimating];
|
||||||
// _iconBackgroundView.backgroundColor = _userIterfaceStyle == UIUserInterfaceStyleDark ? [UIColor appBackgroundColorDark] : [UIColor appBackgroundColorLight];
|
// _iconBackgroundView.backgroundColor = _userIterfaceStyle == UIUserInterfaceStyleDark ? [UIColor appBackgroundColorDark] : [UIColor appBackgroundColorLight];
|
||||||
_iconBackgroundView.backgroundColor = [ThemeManager offlineHostIconBackgroundColor];
|
_iconBackgroundView.backgroundColor = ThemeManager.offlineHostIconBackgroundColor;
|
||||||
_statusLabel.textColor = [ThemeManager textColorGray];
|
_statusLabel.textColor = ThemeManager.textColorGray;
|
||||||
_statusLabel.text = [LocalizationHelper localizedStringForKey: @"Offline"];
|
_statusLabel.text = [LocalizationHelper localizedStringForKey: @"Offline"];
|
||||||
_statusIcon.tintColor = [ThemeManager textColorGray];
|
_statusIcon.tintColor = ThemeManager.textColorGray;
|
||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
_statusIcon.image = [UIImage systemImageNamed:@"exclamationmark.triangle.fill"];
|
_statusIcon.image = [UIImage systemImageNamed:@"exclamationmark.triangle.fill"];
|
||||||
} else {
|
} else {
|
||||||
self.statusIcon.hidden = YES;
|
self.statusIcon.hidden = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
_hostIconView.tintColor = [ThemeManager lowProfileGray];
|
_hostIconView.tintColor = ThemeManager.lowProfileGray;
|
||||||
lockIconView.tintColor = [ThemeManager lowProfileGray];
|
lockIconView.tintColor = ThemeManager.lowProfileGray;
|
||||||
lockIconView.hidden = hostPaired;
|
lockIconView.hidden = hostPaired;
|
||||||
_appButton.hidden = YES;
|
_appButton.hidden = YES;
|
||||||
_launchButton.hidden = YES;
|
_launchButton.hidden = YES;
|
||||||
@@ -595,24 +595,24 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
UIImageSymbolConfiguration *config = [UIImageSymbolConfiguration configurationWithPointSize:buttonHeight/3.45 weight:UIImageSymbolWeightBold];
|
UIImageSymbolConfiguration *config = [UIImageSymbolConfiguration configurationWithPointSize:buttonHeight/3.45 weight:UIImageSymbolWeightBold];
|
||||||
UIImage *templateImage = [UIImage systemImageNamed:@"power" withConfiguration:config];
|
UIImage *templateImage = [UIImage systemImageNamed:@"power" withConfiguration:config];
|
||||||
UIImage *coloredImage = [templateImage imageWithTintColor:hasValidMac ? defaultBlue : [ThemeManager textColorGray] renderingMode:UIImageRenderingModeAlwaysOriginal];
|
UIImage *coloredImage = [templateImage imageWithTintColor:hasValidMac ? defaultBlue : ThemeManager.textColorGray renderingMode:UIImageRenderingModeAlwaysOriginal];
|
||||||
[self.wakeupButton setImage:coloredImage forState:UIControlStateNormal];
|
[self.wakeupButton setImage:coloredImage forState:UIControlStateNormal];
|
||||||
} else {
|
} else {
|
||||||
// Fallback on earlier versions
|
// Fallback on earlier versions
|
||||||
}
|
}
|
||||||
|
|
||||||
self.wakeupButton.backgroundColor = hasValidMac ? [ThemeManager textTintColorWithAlpha] : [[ThemeManager textColorGray] colorWithAlphaComponent:0.2];
|
self.wakeupButton.backgroundColor = hasValidMac ? ThemeManager.textTintColorWithAlpha : [ThemeManager.textColorGray colorWithAlphaComponent:0.2];
|
||||||
[self.wakeupButton setTitleColor: hasValidMac ? defaultBlue : [ThemeManager textColorGray] forState:UIControlStateNormal];
|
[self.wakeupButton setTitleColor: hasValidMac ? defaultBlue : ThemeManager.textColorGray forState:UIControlStateNormal];
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case StateUnknown:
|
case StateUnknown:
|
||||||
_hostSpinner.color = [UIColor whiteColor];
|
_hostSpinner.color = [UIColor whiteColor];
|
||||||
[_hostSpinner startAnimating];
|
[_hostSpinner startAnimating];
|
||||||
// _iconBackgroundView.backgroundColor = _userIterfaceStyle == UIUserInterfaceStyleDark ? [UIColor appBackgroundColorDark] : [UIColor appBackgroundColorLight];
|
// _iconBackgroundView.backgroundColor = _userIterfaceStyle == UIUserInterfaceStyleDark ? [UIColor appBackgroundColorDark] : [UIColor appBackgroundColorLight];
|
||||||
_iconBackgroundView.backgroundColor = [ThemeManager appPrimaryColorWithAlpha];
|
_iconBackgroundView.backgroundColor = ThemeManager.appPrimaryColorWithAlpha;
|
||||||
_statusLabel.textColor = [ThemeManager textColorGray];
|
_statusLabel.textColor = ThemeManager.textColorGray;
|
||||||
_statusLabel.text = [LocalizationHelper localizedStringForKey: @"Detecting..."];
|
_statusLabel.text = [LocalizationHelper localizedStringForKey: @"Detecting..."];
|
||||||
_statusIcon.tintColor = [ThemeManager textColorGray];
|
_statusIcon.tintColor = ThemeManager.textColorGray;
|
||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
_statusIcon.image = [UIImage systemImageNamed:@"antenna.radiowaves.left.and.right"];
|
_statusIcon.image = [UIImage systemImageNamed:@"antenna.radiowaves.left.and.right"];
|
||||||
} else {
|
} else {
|
||||||
@@ -629,13 +629,13 @@ static const float REFRESH_CYCLE = 2.0f;
|
|||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
UIImageSymbolConfiguration *config = [UIImageSymbolConfiguration configurationWithPointSize:buttonHeight/3.45 weight:UIImageSymbolWeightBold];
|
UIImageSymbolConfiguration *config = [UIImageSymbolConfiguration configurationWithPointSize:buttonHeight/3.45 weight:UIImageSymbolWeightBold];
|
||||||
UIImage *templateImage = [UIImage systemImageNamed:@"power" withConfiguration:config];
|
UIImage *templateImage = [UIImage systemImageNamed:@"power" withConfiguration:config];
|
||||||
UIImage *coloredImage = [templateImage imageWithTintColor:hasValidMac ? defaultBlue : [ThemeManager textColorGray] renderingMode:UIImageRenderingModeAlwaysOriginal];
|
UIImage *coloredImage = [templateImage imageWithTintColor:hasValidMac ? defaultBlue : ThemeManager.textColorGray renderingMode:UIImageRenderingModeAlwaysOriginal];
|
||||||
[self.wakeupButton setImage:coloredImage forState:UIControlStateNormal];
|
[self.wakeupButton setImage:coloredImage forState:UIControlStateNormal];
|
||||||
} else {
|
} else {
|
||||||
// Fallback on earlier versions
|
// Fallback on earlier versions
|
||||||
}
|
}
|
||||||
self.wakeupButton.backgroundColor = hasValidMac ? [ThemeManager textTintColorWithAlpha] : [[ThemeManager textColorGray] colorWithAlphaComponent:0.2];
|
self.wakeupButton.backgroundColor = hasValidMac ? ThemeManager.textTintColorWithAlpha : [ThemeManager.textColorGray colorWithAlphaComponent:0.2];
|
||||||
[self.wakeupButton setTitleColor: hasValidMac ? defaultBlue : [ThemeManager textColorGray] forState:UIControlStateNormal];
|
[self.wakeupButton setTitleColor: hasValidMac ? defaultBlue : ThemeManager.textColorGray forState:UIControlStateNormal];
|
||||||
break;
|
break;
|
||||||
default:break;
|
default:break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -507,7 +507,7 @@ class PressureCurveViewController: UIViewController {
|
|||||||
container.layer.cornerRadius = 12
|
container.layer.cornerRadius = 12
|
||||||
container.layer.masksToBounds = true
|
container.layer.masksToBounds = true
|
||||||
container.layer.borderWidth = 2
|
container.layer.borderWidth = 2
|
||||||
container.layer.borderColor = ThemeManager.separatorColor().cgColor
|
container.layer.borderColor = ThemeManager.separatorColor.cgColor
|
||||||
container.addSubview(curveView)
|
container.addSubview(curveView)
|
||||||
self.loadPersistedCurve()
|
self.loadPersistedCurve()
|
||||||
self.curveView.showGraph = true
|
self.curveView.showGraph = true
|
||||||
|
|||||||
@@ -373,6 +373,11 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
|||||||
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
|
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
|
||||||
|
|
||||||
[customToolbarView setItems:[NSArray arrayWithObjects:doneBarButton, windowsBarButton, escapeBarButton, tabBarButton, shiftBarButton, controlBarButton, altBarButton, deleteBarButton, flexibleSpace, nil]];
|
[customToolbarView setItems:[NSArray arrayWithObjects:doneBarButton, windowsBarButton, escapeBarButton, tabBarButton, shiftBarButton, controlBarButton, altBarButton, deleteBarButton, flexibleSpace, nil]];
|
||||||
|
if (@available(iOS 26.0, *)) {
|
||||||
|
for(UIBarButtonItem *button in customToolbarView.items){
|
||||||
|
button.hidesSharedBackground = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
keyInputField.inputAccessoryView = customToolbarView;
|
keyInputField.inputAccessoryView = customToolbarView;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ static BOOL overridePersistedFoldState = YES;
|
|||||||
_iconImageView = [[UIImageView alloc] init];
|
_iconImageView = [[UIImageView alloc] init];
|
||||||
_iconImageView.contentMode = UIViewContentModeScaleAspectFit;
|
_iconImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||||
_iconImageView.translatesAutoresizingMaskIntoConstraints = NO;
|
_iconImageView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
_iconImageView.tintColor = [ThemeManager textColor];
|
_iconImageView.tintColor = ThemeManager.textColor;
|
||||||
[_headerView addSubview:_iconImageView];
|
[_headerView addSubview:_iconImageView];
|
||||||
|
|
||||||
// 标题标签
|
// 标题标签
|
||||||
@@ -86,7 +86,7 @@ static BOOL overridePersistedFoldState = YES;
|
|||||||
_titleLabel.text = _sectionTitle;
|
_titleLabel.text = _sectionTitle;
|
||||||
_titleLabel.accessibilityIdentifier = @"menuSectionTitleLabel";
|
_titleLabel.accessibilityIdentifier = @"menuSectionTitleLabel";
|
||||||
_titleLabel.font = [UIFont systemFontOfSize:19.5 weight:UIFontWeightMedium];
|
_titleLabel.font = [UIFont systemFontOfSize:19.5 weight:UIFontWeightMedium];
|
||||||
_titleLabel.textColor = [ThemeManager textColor];
|
_titleLabel.textColor = ThemeManager.textColor;
|
||||||
_titleLabel.textAlignment = NSTextAlignmentLeft;
|
_titleLabel.textAlignment = NSTextAlignmentLeft;
|
||||||
_titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
_titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
[_headerView addSubview:_titleLabel];
|
[_headerView addSubview:_titleLabel];
|
||||||
@@ -118,7 +118,7 @@ static BOOL overridePersistedFoldState = YES;
|
|||||||
|
|
||||||
// 分隔线
|
// 分隔线
|
||||||
_separatorLine = [[UIView alloc] init];
|
_separatorLine = [[UIView alloc] init];
|
||||||
_separatorLine.backgroundColor = [ThemeManager separatorColor];
|
_separatorLine.backgroundColor = ThemeManager.separatorColor;
|
||||||
_separatorLine.translatesAutoresizingMaskIntoConstraints = NO;
|
_separatorLine.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
|
|
||||||
[self addSubview:_separatorLine];
|
[self addSubview:_separatorLine];
|
||||||
@@ -216,7 +216,7 @@ static BOOL overridePersistedFoldState = YES;
|
|||||||
} else {
|
} else {
|
||||||
_iconImageView.image = icon;
|
_iconImageView.image = icon;
|
||||||
}
|
}
|
||||||
_iconImageView.tintColor = [ThemeManager textColor];
|
_iconImageView.tintColor = ThemeManager.textColor;
|
||||||
_iconImageView.hidden = (icon == nil);
|
_iconImageView.hidden = (icon == nil);
|
||||||
|
|
||||||
// 图标约束
|
// 图标约束
|
||||||
@@ -242,7 +242,7 @@ static BOOL overridePersistedFoldState = YES;
|
|||||||
} else {
|
} else {
|
||||||
_iconImageView.image = icon;
|
_iconImageView.image = icon;
|
||||||
}
|
}
|
||||||
_iconImageView.tintColor = [ThemeManager textColor];
|
_iconImageView.tintColor = ThemeManager.textColor;
|
||||||
_iconImageView.hidden = (icon == nil);
|
_iconImageView.hidden = (icon == nil);
|
||||||
|
|
||||||
// 图标约束
|
// 图标约束
|
||||||
|
|||||||
+114
-59
@@ -11,12 +11,12 @@ import UIKit
|
|||||||
|
|
||||||
@objcMembers
|
@objcMembers
|
||||||
class ThemeManager: NSObject {
|
class ThemeManager: NSObject {
|
||||||
|
|
||||||
static let ThemeDidChangeNotification = "ThemeDidChangeNotification"
|
static let ThemeDidChangeNotification = "ThemeDidChangeNotification"
|
||||||
|
|
||||||
private static var _privateUserInterfaceStyle: UIUserInterfaceStyle = .unspecified
|
private static var _privateUserInterfaceStyle: UIUserInterfaceStyle = .unspecified
|
||||||
private static var _userInterfaceStyle: UIUserInterfaceStyle = .unspecified
|
private static var _userInterfaceStyle: UIUserInterfaceStyle = .unspecified
|
||||||
|
|
||||||
@objc class func setPublicUIStyle() -> UIColor {
|
@objc class func setPublicUIStyle() -> UIColor {
|
||||||
if #available(iOS 13.0, *) {
|
if #available(iOS 13.0, *) {
|
||||||
let traitCollection = UIScreen.main.traitCollection
|
let traitCollection = UIScreen.main.traitCollection
|
||||||
@@ -28,30 +28,30 @@ class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
return UIColor.clear
|
return UIColor.clear
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func userInterfaceStyle() -> UIUserInterfaceStyle {
|
@objc class func userInterfaceStyle() -> UIUserInterfaceStyle {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
return _userInterfaceStyle
|
return _userInterfaceStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func setUserInterfaceStyle(_ style: UIUserInterfaceStyle) {
|
@objc class func setUserInterfaceStyle(_ style: UIUserInterfaceStyle) {
|
||||||
_privateUserInterfaceStyle = style
|
_privateUserInterfaceStyle = style
|
||||||
|
|
||||||
if _userInterfaceStyle == style {
|
if _userInterfaceStyle == style {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
|
||||||
NotificationCenter.default.post(
|
NotificationCenter.default.post(
|
||||||
name: Notification.Name(ThemeDidChangeNotification),
|
name: Notification.Name(ThemeDidChangeNotification),
|
||||||
object: nil
|
object: nil
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func menuBackgroundColor() -> UIColor {
|
@objc static var menuBackgroundColor: UIColor {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
|
||||||
switch userInterfaceStyle() {
|
switch userInterfaceStyle() {
|
||||||
case .light:
|
case .light:
|
||||||
return UIColor(
|
return UIColor(
|
||||||
@@ -60,7 +60,7 @@ class ThemeManager: NSObject {
|
|||||||
blue: 247.0/255.0,
|
blue: 247.0/255.0,
|
||||||
alpha: 1
|
alpha: 1
|
||||||
)
|
)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if #available(iOS 13.0, *) {
|
if #available(iOS 13.0, *) {
|
||||||
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
||||||
@@ -76,9 +76,9 @@ class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func hostViewBackgroundColor() -> UIColor {
|
@objc static var hostViewBackgroundColor: UIColor {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
|
||||||
switch userInterfaceStyle() {
|
switch userInterfaceStyle() {
|
||||||
case .light:
|
case .light:
|
||||||
return UIColor(
|
return UIColor(
|
||||||
@@ -87,7 +87,7 @@ class ThemeManager: NSObject {
|
|||||||
blue: 247.0/255.0,
|
blue: 247.0/255.0,
|
||||||
alpha: 1
|
alpha: 1
|
||||||
)
|
)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if #available(iOS 13.0, *) {
|
if #available(iOS 13.0, *) {
|
||||||
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
||||||
@@ -98,9 +98,9 @@ class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func offlineHostIconBackgroundColor() -> UIColor {
|
@objc static var offlineHostIconBackgroundColor: UIColor {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
|
||||||
switch userInterfaceStyle() {
|
switch userInterfaceStyle() {
|
||||||
case .light:
|
case .light:
|
||||||
return UIColor(
|
return UIColor(
|
||||||
@@ -109,7 +109,7 @@ class ThemeManager: NSObject {
|
|||||||
blue: 247.0/255.0,
|
blue: 247.0/255.0,
|
||||||
alpha: 1
|
alpha: 1
|
||||||
)
|
)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return UIColor(
|
return UIColor(
|
||||||
red: 17.0/255.0,
|
red: 17.0/255.0,
|
||||||
@@ -119,10 +119,10 @@ class ThemeManager: NSObject {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func widgetBackgroundColor() -> UIColor {
|
@objc static var widgetBackgroundColor: UIColor {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
|
||||||
switch userInterfaceStyle() {
|
switch userInterfaceStyle() {
|
||||||
case .light:
|
case .light:
|
||||||
return UIColor.white
|
return UIColor.white
|
||||||
@@ -141,10 +141,52 @@ class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func separatorColor() -> UIColor {
|
@objc static var separatorColor: UIColor {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
switch userInterfaceStyle() {
|
||||||
|
case .light:
|
||||||
|
if #available(iOS 13.0, *) {
|
||||||
|
let lightTraits = UITraitCollection(userInterfaceStyle: .light)
|
||||||
|
return GenericUtils.liquidGlassEnabled ? legacySepratorColor : UIColor.separator.resolvedColor(with: lightTraits)
|
||||||
|
} else {
|
||||||
|
return UIColor(
|
||||||
|
red: 214.0/255.0,
|
||||||
|
green: 214.0/255.0,
|
||||||
|
blue: 218.0/255.0,
|
||||||
|
alpha: 1
|
||||||
|
)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
if #available(iOS 13.0, *) {
|
||||||
|
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
||||||
|
return GenericUtils.liquidGlassEnabled ? legacySepratorColor : UIColor.separator.resolvedColor(with: darkTraits)
|
||||||
|
} else {return UIColor(white: 0.28, alpha: 1)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc static var legacySepratorColor: UIColor {
|
||||||
|
_ = setPublicUIStyle()
|
||||||
|
switch userInterfaceStyle() {
|
||||||
|
case .light:
|
||||||
|
return UIColor(
|
||||||
|
red: 0.23529411764705882,
|
||||||
|
green: 0.23529411764705882,
|
||||||
|
blue: 0.2627450980392157,
|
||||||
|
alpha: 0.29
|
||||||
|
)
|
||||||
|
default:
|
||||||
|
return UIColor(
|
||||||
|
red: 0.32941176470588235,
|
||||||
|
green: 0.32941176470588235,
|
||||||
|
blue: 0.34509803921568627,
|
||||||
|
alpha: 0.6
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc static var hostCardSeparatorColor: UIColor {
|
||||||
|
_ = setPublicUIStyle()
|
||||||
switch userInterfaceStyle() {
|
switch userInterfaceStyle() {
|
||||||
case .light:
|
case .light:
|
||||||
if #available(iOS 13.0, *) {
|
if #available(iOS 13.0, *) {
|
||||||
@@ -166,20 +208,9 @@ class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func hostCardSeparatorColor() -> UIColor {
|
@objc static var textColor: UIColor {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
|
||||||
switch userInterfaceStyle() {
|
|
||||||
case .light:
|
|
||||||
return UIColor(white: 0.1, alpha: 0.28)
|
|
||||||
default:
|
|
||||||
return UIColor(white: 0.28, alpha: 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc class func textColor() -> UIColor {
|
|
||||||
_ = setPublicUIStyle()
|
|
||||||
|
|
||||||
switch userInterfaceStyle() {
|
switch userInterfaceStyle() {
|
||||||
case .light:
|
case .light:
|
||||||
return UIColor.black
|
return UIColor.black
|
||||||
@@ -188,9 +219,9 @@ class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func sectionLabelTextColor() -> UIColor {
|
@objc static var sectionLabelTextColor: UIColor {
|
||||||
_ = setPublicUIStyle()
|
_ = setPublicUIStyle()
|
||||||
|
|
||||||
switch userInterfaceStyle() {
|
switch userInterfaceStyle() {
|
||||||
case .light:
|
case .light:
|
||||||
if #available(iOS 13.0, *) {
|
if #available(iOS 13.0, *) {
|
||||||
@@ -208,8 +239,8 @@ class ThemeManager: NSObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func appPrimaryColor() -> UIColor {
|
@objc static var appPrimaryColor: UIColor {
|
||||||
return UIColor(
|
return UIColor(
|
||||||
red: 0.0,
|
red: 0.0,
|
||||||
green: 0.48,
|
green: 0.48,
|
||||||
@@ -217,43 +248,43 @@ class ThemeManager: NSObject {
|
|||||||
alpha: 1.0
|
alpha: 1.0
|
||||||
) // #0A84FF
|
) // #0A84FF
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func appSecondaryColor() -> UIColor {
|
@objc static var appSecondaryColor: UIColor {
|
||||||
|
|
||||||
let originalColor = appPrimaryColor()
|
let originalColor = appPrimaryColor
|
||||||
let grayColor = UIColor.gray
|
let grayColor = UIColor.gray
|
||||||
let mixRatio: CGFloat = 0.3
|
let mixRatio: CGFloat = 0.3
|
||||||
|
|
||||||
var r1: CGFloat = 0
|
var r1: CGFloat = 0
|
||||||
var g1: CGFloat = 0
|
var g1: CGFloat = 0
|
||||||
var b1: CGFloat = 0
|
var b1: CGFloat = 0
|
||||||
var a1: CGFloat = 0
|
var a1: CGFloat = 0
|
||||||
|
|
||||||
var r2: CGFloat = 0
|
var r2: CGFloat = 0
|
||||||
var g2: CGFloat = 0
|
var g2: CGFloat = 0
|
||||||
var b2: CGFloat = 0
|
var b2: CGFloat = 0
|
||||||
var a2: CGFloat = 0
|
var a2: CGFloat = 0
|
||||||
|
|
||||||
originalColor.getRed(&r1, green: &g1, blue: &b1, alpha: &a1)
|
originalColor.getRed(&r1, green: &g1, blue: &b1, alpha: &a1)
|
||||||
grayColor.getRed(&r2, green: &g2, blue: &b2, alpha: &a2)
|
grayColor.getRed(&r2, green: &g2, blue: &b2, alpha: &a2)
|
||||||
|
|
||||||
let r = r1 * (1 - mixRatio) + r2 * mixRatio
|
let r = r1 * (1 - mixRatio) + r2 * mixRatio
|
||||||
let g = g1 * (1 - mixRatio) + g2 * mixRatio
|
let g = g1 * (1 - mixRatio) + g2 * mixRatio
|
||||||
let b = b1 * (1 - mixRatio) + b2 * mixRatio
|
let b = b1 * (1 - mixRatio) + b2 * mixRatio
|
||||||
let a = a1 * (1 - mixRatio) + a2 * mixRatio
|
let a = a1 * (1 - mixRatio) + a2 * mixRatio
|
||||||
|
|
||||||
return UIColor(red: r, green: g, blue: b, alpha: a)
|
return UIColor(red: r, green: g, blue: b, alpha: a)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func appPrimaryColorWithAlpha() -> UIColor {
|
@objc static var appPrimaryColorWithAlpha: UIColor {
|
||||||
return appPrimaryColor().withAlphaComponent(0.24)
|
return appPrimaryColor.withAlphaComponent(0.24)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func textTintColorWithAlpha() -> UIColor {
|
@objc static var textTintColorWithAlpha: UIColor {
|
||||||
return appPrimaryColor().withAlphaComponent(0.24)
|
return appPrimaryColor.withAlphaComponent(0.24)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func textColorGray() -> UIColor {
|
@objc static var textColorGray: UIColor {
|
||||||
return UIColor(
|
return UIColor(
|
||||||
red: 0.55,
|
red: 0.55,
|
||||||
green: 0.55,
|
green: 0.55,
|
||||||
@@ -261,8 +292,8 @@ class ThemeManager: NSObject {
|
|||||||
alpha: 0.95
|
alpha: 0.95
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc class func lowProfileGray() -> UIColor {
|
@objc static var lowProfileGray: UIColor {
|
||||||
return UIColor(
|
return UIColor(
|
||||||
red: 0.65,
|
red: 0.65,
|
||||||
green: 0.65,
|
green: 0.65,
|
||||||
@@ -270,4 +301,28 @@ class ThemeManager: NSObject {
|
|||||||
alpha: 0.4
|
alpha: 0.4
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
|
@objc static var liquidGlassSwitchOffTint: UIColor {
|
||||||
|
switch userInterfaceStyle() {
|
||||||
|
case .light:
|
||||||
|
return UIColor.systemFill
|
||||||
|
default:
|
||||||
|
return UIColor.clear
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc static var liquidGlassSliderMaxTrackTint: UIColor {
|
||||||
|
if #available(iOS 13.0, *) {
|
||||||
|
switch userInterfaceStyle() {
|
||||||
|
case .light:
|
||||||
|
return UIColor.tertiarySystemFill
|
||||||
|
default:
|
||||||
|
return UIColor.tertiarySystemFill
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return UIColor.black
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -178,7 +178,7 @@ static UIImage* noImage;
|
|||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
UIImageSymbolConfiguration *config = [UIImageSymbolConfiguration configurationWithPointSize:23];
|
UIImageSymbolConfiguration *config = [UIImageSymbolConfiguration configurationWithPointSize:23];
|
||||||
UIImageView* playIcon = [[UIImageView alloc] initWithImage:[[UIImage systemImageNamed:@"play.circle.fill" withConfiguration:config] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
|
UIImageView* playIcon = [[UIImageView alloc] initWithImage:[[UIImage systemImageNamed:@"play.circle.fill" withConfiguration:config] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
|
||||||
//playIcon.tintColor = [[ThemeManager widgetBackgroundColor] colorWithAlphaComponent:0.85];
|
//playIcon.tintColor = [ThemeManager.widgetBackgroundColor colorWithAlphaComponent:0.85];
|
||||||
playIcon.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.55];
|
playIcon.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.55];
|
||||||
|
|
||||||
_appOverlay = playIcon;
|
_appOverlay = playIcon;
|
||||||
@@ -202,7 +202,7 @@ static UIImage* noImage;
|
|||||||
UIImage* appIconImage = [[UIImage imageNamed:@"icon-pc-app"] imageWithConfiguration:config];
|
UIImage* appIconImage = [[UIImage imageNamed:@"icon-pc-app"] imageWithConfiguration:config];
|
||||||
UIImageView* appIcon = [[UIImageView alloc] initWithImage:[appIconImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
|
UIImageView* appIcon = [[UIImageView alloc] initWithImage:[appIconImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
|
||||||
|
|
||||||
//layIcon.tintColor = [[ThemeManager widgetBackgroundColor] colorWithAlphaComponent:0.85];
|
//layIcon.tintColor = [ThemeManager.widgetBackgroundColor colorWithAlphaComponent:0.85];
|
||||||
appIcon.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
|
appIcon.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
|
||||||
|
|
||||||
_appOverlay = appIcon;
|
_appOverlay = appIcon;
|
||||||
|
|||||||
@@ -88,4 +88,17 @@ import Foundation
|
|||||||
@objc static var dockedNavBarTopAnchorOffset: CGFloat {
|
@objc static var dockedNavBarTopAnchorOffset: CGFloat {
|
||||||
return liquidGlassEnabled ? 10 : 0
|
return liquidGlassEnabled ? 10 : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
|
@objc static func applyOffTintColor(_ view: UIView) {
|
||||||
|
let name = String(describing: type(of: view))
|
||||||
|
if name.contains("UISwitchModernVisualElement") {
|
||||||
|
view.backgroundColor = ThemeManager.liquidGlassSwitchOffTint
|
||||||
|
view.layer.cornerRadius = view.bounds.height/2
|
||||||
|
view.clipsToBounds = true
|
||||||
|
}
|
||||||
|
for sub in view.subviews {
|
||||||
|
applyOffTintColor(sub)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -20,9 +20,11 @@
|
|||||||
const double NAV_BAR_HEIGHT = 50;
|
const double NAV_BAR_HEIGHT = 50;
|
||||||
|
|
||||||
@interface OSCProfilesTableViewController () <UIGestureRecognizerDelegate>
|
@interface OSCProfilesTableViewController () <UIGestureRecognizerDelegate>
|
||||||
|
@property (weak, nonatomic) IBOutlet UINavigationItem *profileTableViewNavigationItem;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation OSCProfilesTableViewController {
|
@implementation OSCProfilesTableViewController {
|
||||||
OSCProfilesManager *profilesManager;
|
OSCProfilesManager *profilesManager;
|
||||||
}
|
}
|
||||||
@@ -70,6 +72,11 @@ const double NAV_BAR_HEIGHT = 50;
|
|||||||
|
|
||||||
self.profileTableViewNavigationBar.layer.masksToBounds = true; // 使圆角生效
|
self.profileTableViewNavigationBar.layer.masksToBounds = true; // 使圆角生效
|
||||||
self.profileTableViewNavigationBar.layer.mask = maskLayer;
|
self.profileTableViewNavigationBar.layer.mask = maskLayer;
|
||||||
|
if (GenericUtils.liquidGlassEnabled) {
|
||||||
|
if (@available(iOS 13.0, *)) {
|
||||||
|
self.profileTableViewNavigationBar.layer.backgroundColor = UIColor.systemFillColor.CGColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.tableView.layer.cornerRadius = 15; // 设置圆角半径
|
self.tableView.layer.cornerRadius = 15; // 设置圆角半径
|
||||||
self.tableView.layer.masksToBounds = true; // 使圆角生效
|
self.tableView.layer.masksToBounds = true; // 使圆角生效
|
||||||
@@ -101,6 +108,17 @@ const double NAV_BAR_HEIGHT = 50;
|
|||||||
tap.delegate = (id<UIGestureRecognizerDelegate>)self;
|
tap.delegate = (id<UIGestureRecognizerDelegate>)self;
|
||||||
|
|
||||||
[self.view addGestureRecognizer:tap];
|
[self.view addGestureRecognizer:tap];
|
||||||
|
|
||||||
|
if(GenericUtils.liquidGlassEnabled){
|
||||||
|
if (@available(iOS 26.0, *)) {
|
||||||
|
for(UIBarButtonItem* button in self.profileTableViewNavigationItem.leftBarButtonItems){
|
||||||
|
button.hidesSharedBackground = true;
|
||||||
|
}
|
||||||
|
for(UIBarButtonItem* button in self.profileTableViewNavigationItem.rightBarButtonItems){
|
||||||
|
button.hidesSharedBackground = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)dismissSelf {
|
- (void)dismissSelf {
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ static const CGFloat cellOffsetY = 20;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateTheme {
|
- (void)updateTheme {
|
||||||
self.collectionView.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
self.collectionView.backgroundColor = ThemeManager.hostViewBackgroundColor;
|
||||||
for (HostCell *cell in [self.collectionView visibleCells]) {
|
for (HostCell *cell in [self.collectionView visibleCells]) {
|
||||||
[cell.cardView updateTheme];
|
[cell.cardView updateTheme];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ static NSMutableSet* hostList;
|
|||||||
UINavigationBarAppearance* appearance = navBarAppearanceStandard;
|
UINavigationBarAppearance* appearance = navBarAppearanceStandard;
|
||||||
NSDictionary* titleTextAttributes = @{
|
NSDictionary* titleTextAttributes = @{
|
||||||
NSFontAttributeName: [UIFont systemFontOfSize:20 weight:UIFontWeightMedium],
|
NSFontAttributeName: [UIFont systemFontOfSize:20 weight:UIFontWeightMedium],
|
||||||
NSForegroundColorAttributeName: [ThemeManager textColor] // 可选,设置标题颜色
|
NSForegroundColorAttributeName: ThemeManager.textColor // 可选,设置标题颜色
|
||||||
};
|
};
|
||||||
appearance.titleTextAttributes = titleTextAttributes;
|
appearance.titleTextAttributes = titleTextAttributes;
|
||||||
navBarAppearanceStandard = appearance;
|
navBarAppearanceStandard = appearance;
|
||||||
@@ -170,7 +170,7 @@ static NSMutableSet* hostList;
|
|||||||
UINavigationBarAppearance* appearance = navBarAppearanceStandard;
|
UINavigationBarAppearance* appearance = navBarAppearanceStandard;
|
||||||
NSDictionary* titleTextAttributes = @{
|
NSDictionary* titleTextAttributes = @{
|
||||||
NSFontAttributeName: [UIFont systemFontOfSize:20 weight:UIFontWeightMedium],
|
NSFontAttributeName: [UIFont systemFontOfSize:20 weight:UIFontWeightMedium],
|
||||||
NSForegroundColorAttributeName: [ThemeManager textColor] // 可选,设置标题颜色
|
NSForegroundColorAttributeName: ThemeManager.textColor // 可选,设置标题颜色
|
||||||
};
|
};
|
||||||
appearance.titleTextAttributes = titleTextAttributes;
|
appearance.titleTextAttributes = titleTextAttributes;
|
||||||
navBarAppearanceStandard = appearance;
|
navBarAppearanceStandard = appearance;
|
||||||
@@ -178,7 +178,7 @@ static NSMutableSet* hostList;
|
|||||||
/*
|
/*
|
||||||
self.navigationController.navigationBar.titleTextAttributes = @{
|
self.navigationController.navigationBar.titleTextAttributes = @{
|
||||||
NSFontAttributeName: [UIFont systemFontOfSize:24 weight:UIFontWeightSemibold],
|
NSFontAttributeName: [UIFont systemFontOfSize:24 weight:UIFontWeightSemibold],
|
||||||
NSForegroundColorAttributeName: [ThemeManager textColor] // 可选,设置标题颜色
|
NSForegroundColorAttributeName: ThemeManager.textColor // 可选,设置标题颜色
|
||||||
};*/
|
};*/
|
||||||
self.title = [LocalizationHelper localizedStringForKey: @"Hosts" ];
|
self.title = [LocalizationHelper localizedStringForKey: @"Hosts" ];
|
||||||
//self.title = nil;
|
//self.title = nil;
|
||||||
@@ -380,7 +380,7 @@ static NSMutableSet* hostList;
|
|||||||
// [self.view bringSubviewToFront:self.collectionView];
|
// [self.view bringSubviewToFront:self.collectionView];
|
||||||
self.hostCollectionVC.view.hidden = YES;
|
self.hostCollectionVC.view.hidden = YES;
|
||||||
self.collectionView.hidden = NO;
|
self.collectionView.hidden = NO;
|
||||||
self.collectionView.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
self.collectionView.backgroundColor = ThemeManager.hostViewBackgroundColor;
|
||||||
//self.view.backgroundColor = [ThemeManager appBackgroundColor];
|
//self.view.backgroundColor = [ThemeManager appBackgroundColor];
|
||||||
|
|
||||||
// [self.collectionView setContentOffset:CGPointZero animated:NO];
|
// [self.collectionView setContentOffset:CGPointZero animated:NO];
|
||||||
@@ -1395,7 +1395,7 @@ static NSMutableSet* hostList;
|
|||||||
|
|
||||||
CGFloat buttonHeight = 30;
|
CGFloat buttonHeight = 30;
|
||||||
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
|
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||||
button.backgroundColor = liquidGlassEnabled ? [ThemeManager appPrimaryColor] : [ThemeManager appPrimaryColor]; // #0A85FF
|
button.backgroundColor = liquidGlassEnabled ? ThemeManager.appPrimaryColor : ThemeManager.appPrimaryColor; // #0A85FF
|
||||||
button.layer.cornerRadius = buttonHeight/2;
|
button.layer.cornerRadius = buttonHeight/2;
|
||||||
button.clipsToBounds = !liquidGlassEnabled;
|
button.clipsToBounds = !liquidGlassEnabled;
|
||||||
|
|
||||||
@@ -1420,13 +1420,13 @@ static NSMutableSet* hostList;
|
|||||||
button.titleLabel.font = [UIFont systemFontOfSize:liquidGlassEnabled ? 16 : 16 weight:UIFontWeightMedium];
|
button.titleLabel.font = [UIFont systemFontOfSize:liquidGlassEnabled ? 16 : 16 weight:UIFontWeightMedium];
|
||||||
// 文字颜色设置为 tintColor 控制
|
// 文字颜色设置为 tintColor 控制
|
||||||
if(liquidGlassEnabled) button.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0.9, 0);
|
if(liquidGlassEnabled) button.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0.9, 0);
|
||||||
button.tintColor = liquidGlassEnabled ? [ThemeManager appPrimaryColor] : UIColor.whiteColor;
|
button.tintColor = liquidGlassEnabled ? ThemeManager.appPrimaryColor : UIColor.whiteColor;
|
||||||
[button setTitleColor:button.tintColor forState:UIControlStateNormal];
|
[button setTitleColor:button.tintColor forState:UIControlStateNormal];
|
||||||
// button.tintColor = UIColor.whiteColor;
|
// button.tintColor = UIColor.whiteColor;
|
||||||
// [button setTitleColor:button.tintColor forState:UIControlStateNormal];
|
// [button setTitleColor:button.tintColor forState:UIControlStateNormal];
|
||||||
|
|
||||||
// 设置按下时的 tintColor(变灰或淡)
|
// 设置按下时的 tintColor(变灰或淡)
|
||||||
UIColor *highlightColor = [ThemeManager textColorGray];
|
UIColor *highlightColor = ThemeManager.textColorGray;
|
||||||
[button setTitleColor:highlightColor forState:UIControlStateHighlighted];
|
[button setTitleColor:highlightColor forState:UIControlStateHighlighted];
|
||||||
button.adjustsImageWhenHighlighted = YES; // 图标自动变淡
|
button.adjustsImageWhenHighlighted = YES; // 图标自动变淡
|
||||||
|
|
||||||
@@ -1465,7 +1465,7 @@ static NSMutableSet* hostList;
|
|||||||
|
|
||||||
button.titleLabel.font = [UIFont systemFontOfSize:buttonHeight*0.6 weight:UIFontWeightMedium];
|
button.titleLabel.font = [UIFont systemFontOfSize:buttonHeight*0.6 weight:UIFontWeightMedium];
|
||||||
// 文字颜色设置为 tintColor 控制
|
// 文字颜色设置为 tintColor 控制
|
||||||
button.tintColor = [ThemeManager appPrimaryColor];
|
button.tintColor = ThemeManager.appPrimaryColor;
|
||||||
[button setTitleColor:button.tintColor forState:UIControlStateNormal];
|
[button setTitleColor:button.tintColor forState:UIControlStateNormal];
|
||||||
|
|
||||||
button.frame = CGRectMake(0, 0, buttonHeight*1.3, buttonHeight*1.05);
|
button.frame = CGRectMake(0, 0, buttonHeight*1.3, buttonHeight*1.05);
|
||||||
@@ -1497,7 +1497,7 @@ static NSMutableSet* hostList;
|
|||||||
else{
|
else{
|
||||||
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; // old ios depend on this, do not remove
|
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; // old ios depend on this, do not remove
|
||||||
self.navigationController.navigationBar.barTintColor = [UIColor clearColor]; // ios 14 depend on this, do not remove
|
self.navigationController.navigationBar.barTintColor = [UIColor clearColor]; // ios 14 depend on this, do not remove
|
||||||
self.navigationController.navigationBar.barTintColor = [ThemeManager hostViewBackgroundColor]; // ios 14 depend on this, do not remove
|
self.navigationController.navigationBar.barTintColor = ThemeManager.hostViewBackgroundColor; // ios 14 depend on this, do not remove
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1505,10 +1505,10 @@ static NSMutableSet* hostList;
|
|||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
UINavigationBarAppearance* appearance = [[UINavigationBarAppearance alloc] init];
|
UINavigationBarAppearance* appearance = [[UINavigationBarAppearance alloc] init];
|
||||||
[appearance configureWithOpaqueBackground];
|
[appearance configureWithOpaqueBackground];
|
||||||
appearance.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
appearance.backgroundColor = ThemeManager.hostViewBackgroundColor;
|
||||||
appearance.shadowColor = nil;
|
appearance.shadowColor = nil;
|
||||||
NSDictionary* titleTextAttributes = @{
|
NSDictionary* titleTextAttributes = @{
|
||||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
NSForegroundColorAttributeName: ThemeManager.textColor
|
||||||
};
|
};
|
||||||
appearance.titleTextAttributes = titleTextAttributes;
|
appearance.titleTextAttributes = titleTextAttributes;
|
||||||
appearance.shadowColor = [UIColor clearColor];
|
appearance.shadowColor = [UIColor clearColor];
|
||||||
@@ -1543,7 +1543,7 @@ static NSMutableSet* hostList;
|
|||||||
_settingsButton.imageInsets = GenericUtils.liquidGlassEnabled ? UIEdgeInsetsMake(0, 0, 0, 0.55) : UIEdgeInsetsMake(10, 10, 0, 0);
|
_settingsButton.imageInsets = GenericUtils.liquidGlassEnabled ? UIEdgeInsetsMake(0, 0, 0, 0.55) : UIEdgeInsetsMake(10, 10, 0, 0);
|
||||||
if(GenericUtils.liquidGlassEnabled){
|
if(GenericUtils.liquidGlassEnabled){
|
||||||
// if(@available(iOS 26.0, *)) _settingsButton.hidesSharedBackground = YES;
|
// if(@available(iOS 26.0, *)) _settingsButton.hidesSharedBackground = YES;
|
||||||
_settingsButton.tintColor = [ThemeManager appPrimaryColor];
|
_settingsButton.tintColor = ThemeManager.appPrimaryColor;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
[_settingsButton setTitle:[LocalizationHelper localizedStringForKey:@"Settings"]];
|
[_settingsButton setTitle:[LocalizationHelper localizedStringForKey:@"Settings"]];
|
||||||
@@ -1572,29 +1572,29 @@ static NSMutableSet* hostList;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateTheme {
|
- (void)updateTheme {
|
||||||
self.view.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
self.view.backgroundColor = ThemeManager.hostViewBackgroundColor;
|
||||||
self.hostCollectionVC.view.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
self.hostCollectionVC.view.backgroundColor = ThemeManager.hostViewBackgroundColor;
|
||||||
self.collectionView.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
self.collectionView.backgroundColor = ThemeManager.hostViewBackgroundColor;
|
||||||
|
|
||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
UINavigationBarAppearance* appearance = navBarAppearanceStandard;
|
UINavigationBarAppearance* appearance = navBarAppearanceStandard;
|
||||||
appearance.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
appearance.backgroundColor = ThemeManager.hostViewBackgroundColor;
|
||||||
NSDictionary* titleTextAttributes = @{
|
NSDictionary* titleTextAttributes = @{
|
||||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
NSForegroundColorAttributeName: ThemeManager.textColor
|
||||||
};
|
};
|
||||||
appearance.titleTextAttributes = titleTextAttributes;
|
appearance.titleTextAttributes = titleTextAttributes;
|
||||||
navBarAppearanceStandard = appearance;
|
navBarAppearanceStandard = appearance;
|
||||||
}
|
}
|
||||||
|
|
||||||
_settingsButton.tintColor = [ThemeManager appPrimaryColor];
|
_settingsButton.tintColor = ThemeManager.appPrimaryColor;
|
||||||
_upButton.tintColor = [ThemeManager appPrimaryColor];
|
_upButton.tintColor = ThemeManager.appPrimaryColor;
|
||||||
((UIButton*)_addHostButton.customView).backgroundColor = GenericUtils.liquidGlassEnabled ? UIColor.clearColor : [ThemeManager appPrimaryColor];
|
((UIButton*)_addHostButton.customView).backgroundColor = GenericUtils.liquidGlassEnabled ? UIColor.clearColor : ThemeManager.appPrimaryColor;
|
||||||
((UIButton*)_helpButton.customView).tintColor = [ThemeManager appPrimaryColor];
|
((UIButton*)_helpButton.customView).tintColor = ThemeManager.appPrimaryColor;
|
||||||
|
|
||||||
[self applyNavBarAppearance];
|
[self applyNavBarAppearance];
|
||||||
[self updateTitle];
|
[self updateTitle];
|
||||||
if (hostViewTitleLabel) {
|
if (hostViewTitleLabel) {
|
||||||
hostViewTitleLabel.textColor = [ThemeManager textColor];
|
hostViewTitleLabel.textColor = ThemeManager.textColor;
|
||||||
}
|
}
|
||||||
[self.hostCollectionVC updateTheme];
|
[self.hostCollectionVC updateTheme];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ static CGFloat scaledValue( CGFloat v1, CGFloat min2, CGFloat max2, CGFloat min1
|
|||||||
_rearNavView.translatesAutoresizingMaskIntoConstraints = NO;
|
_rearNavView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
_safeAreaPadding.translatesAutoresizingMaskIntoConstraints = NO;
|
_safeAreaPadding.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
// _rearNavView.backgroundColor = [UIColor lightGrayColor]; // 设置背景色以便查看
|
// _rearNavView.backgroundColor = [UIColor lightGrayColor]; // 设置背景色以便查看
|
||||||
_safeAreaPadding.backgroundColor = [ThemeManager menuBackgroundColor];
|
_safeAreaPadding.backgroundColor = ThemeManager.menuBackgroundColor;
|
||||||
|
|
||||||
// NSLog(@"_c.rearViewRevealWidth: %f", _c.rearViewRevealWidth);
|
// NSLog(@"_c.rearViewRevealWidth: %f", _c.rearViewRevealWidth);
|
||||||
// _rearNavView.frame = CGRectMake(0, 0, _c.rearViewRevealWidth, 100);
|
// _rearNavView.frame = CGRectMake(0, 0, _c.rearViewRevealWidth, 100);
|
||||||
@@ -838,21 +838,21 @@ const int FrontViewPositionNone = 0xff;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateTheme {
|
- (void)updateTheme {
|
||||||
_contentView.backgroundColor = [ThemeManager menuBackgroundColor];
|
_contentView.backgroundColor = ThemeManager.menuBackgroundColor;
|
||||||
_contentView.rearNavView.backgroundColor = [ThemeManager menuBackgroundColor];
|
_contentView.rearNavView.backgroundColor = ThemeManager.menuBackgroundColor;
|
||||||
_contentView.safeAreaPadding.backgroundColor = [ThemeManager menuBackgroundColor];
|
_contentView.safeAreaPadding.backgroundColor = ThemeManager.menuBackgroundColor;
|
||||||
_separatorLine.backgroundColor = [ThemeManager separatorColor];
|
_separatorLine.backgroundColor = ThemeManager.separatorColor;
|
||||||
|
|
||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
UINavigationBarAppearance *navBarAppearanceStandard = _dockedNavBar.standardAppearance;
|
UINavigationBarAppearance *navBarAppearanceStandard = _dockedNavBar.standardAppearance;
|
||||||
navBarAppearanceStandard.backgroundColor = [ThemeManager menuBackgroundColor];
|
navBarAppearanceStandard.backgroundColor = ThemeManager.menuBackgroundColor;
|
||||||
navBarAppearanceStandard.titleTextAttributes = @{
|
navBarAppearanceStandard.titleTextAttributes = @{
|
||||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
NSForegroundColorAttributeName: ThemeManager.textColor
|
||||||
};
|
};
|
||||||
_dockedNavBar.standardAppearance = navBarAppearanceStandard;
|
_dockedNavBar.standardAppearance = navBarAppearanceStandard;
|
||||||
_dockedNavBar.scrollEdgeAppearance = navBarAppearanceStandard;
|
_dockedNavBar.scrollEdgeAppearance = navBarAppearanceStandard;
|
||||||
} else {
|
} else {
|
||||||
_dockedNavBar.barTintColor = [ThemeManager menuBackgroundColor];
|
_dockedNavBar.barTintColor = ThemeManager.menuBackgroundColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -921,7 +921,7 @@ const int FrontViewPositionNone = 0xff;
|
|||||||
// 分隔线
|
// 分隔线
|
||||||
_separatorLine = [[UIView alloc] init];
|
_separatorLine = [[UIView alloc] init];
|
||||||
_separatorLine.accessibilityIdentifier = @"menuSeparator";
|
_separatorLine.accessibilityIdentifier = @"menuSeparator";
|
||||||
_separatorLine.backgroundColor = [ThemeManager separatorColor];
|
_separatorLine.backgroundColor = ThemeManager.separatorColor;
|
||||||
_separatorLine.translatesAutoresizingMaskIntoConstraints = NO;
|
_separatorLine.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
[_contentView.frontView addSubview:_separatorLine];
|
[_contentView.frontView addSubview:_separatorLine];
|
||||||
_separatorLine.hidden = YES;
|
_separatorLine.hidden = YES;
|
||||||
@@ -955,10 +955,10 @@ const int FrontViewPositionNone = 0xff;
|
|||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
UINavigationBarAppearance *navBarAppearanceStandard = [[UINavigationBarAppearance alloc] init];
|
UINavigationBarAppearance *navBarAppearanceStandard = [[UINavigationBarAppearance alloc] init];
|
||||||
[navBarAppearanceStandard configureWithOpaqueBackground]; // 不透明
|
[navBarAppearanceStandard configureWithOpaqueBackground]; // 不透明
|
||||||
navBarAppearanceStandard.backgroundColor =[ThemeManager menuBackgroundColor];; // 设置你需要的背景色
|
navBarAppearanceStandard.backgroundColor =ThemeManager.menuBackgroundColor;; // 设置你需要的背景色
|
||||||
navBarAppearanceStandard.shadowColor = nil; // 去掉底部分割线(可选)
|
navBarAppearanceStandard.shadowColor = nil; // 去掉底部分割线(可选)
|
||||||
navBarAppearanceStandard.titleTextAttributes = @{
|
navBarAppearanceStandard.titleTextAttributes = @{
|
||||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
NSForegroundColorAttributeName: ThemeManager.textColor
|
||||||
};
|
};
|
||||||
navBarAppearanceStandard.shadowColor = [UIColor clearColor];
|
navBarAppearanceStandard.shadowColor = [UIColor clearColor];
|
||||||
navBarAppearanceStandard.backgroundImage = nil;
|
navBarAppearanceStandard.backgroundImage = nil;
|
||||||
@@ -967,7 +967,7 @@ const int FrontViewPositionNone = 0xff;
|
|||||||
_dockedNavBar.shadowImage = nil;
|
_dockedNavBar.shadowImage = nil;
|
||||||
} else {
|
} else {
|
||||||
_dockedNavBar.barTintColor = [UIColor clearColor];
|
_dockedNavBar.barTintColor = [UIColor clearColor];
|
||||||
_dockedNavBar.barTintColor = [ThemeManager menuBackgroundColor];
|
_dockedNavBar.barTintColor = ThemeManager.menuBackgroundColor;
|
||||||
_dockedNavBar.shadowImage = [UIImage new]; // remove bottom line for navbar
|
_dockedNavBar.shadowImage = [UIImage new]; // remove bottom line for navbar
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1015,7 +1015,7 @@ const int FrontViewPositionNone = 0xff;
|
|||||||
backButton.imageInsets = GenericUtils.liquidGlassEnabled ? UIEdgeInsetsMake(0, 0, 0, 0.55) : UIEdgeInsetsMake(20, 10, 0, 0);
|
backButton.imageInsets = GenericUtils.liquidGlassEnabled ? UIEdgeInsetsMake(0, 0, 0, 0.55) : UIEdgeInsetsMake(20, 10, 0, 0);
|
||||||
if(GenericUtils.liquidGlassEnabled){
|
if(GenericUtils.liquidGlassEnabled){
|
||||||
// if(@available(iOS 26.0, *)) backButton.hidesSharedBackground = YES;
|
// if(@available(iOS 26.0, *)) backButton.hidesSharedBackground = YES;
|
||||||
backButton.tintColor = [ThemeManager appPrimaryColor];
|
backButton.tintColor = ThemeManager.appPrimaryColor;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
[backButton setTitle:[LocalizationHelper localizedStringForKey:@"Collapse"]];
|
[backButton setTitle:[LocalizationHelper localizedStringForKey:@"Collapse"]];
|
||||||
@@ -1042,7 +1042,7 @@ const int FrontViewPositionNone = 0xff;
|
|||||||
[_disconnectButton setImage:image];
|
[_disconnectButton setImage:image];
|
||||||
if(GenericUtils.liquidGlassEnabled) _disconnectButton.imageInsets = UIEdgeInsetsMake(5, 5, 5, 5);
|
if(GenericUtils.liquidGlassEnabled) _disconnectButton.imageInsets = UIEdgeInsetsMake(5, 5, 5, 5);
|
||||||
|
|
||||||
_disconnectButton.tintColor = [ThemeManager appPrimaryColor];
|
_disconnectButton.tintColor = ThemeManager.appPrimaryColor;
|
||||||
} else {
|
} else {
|
||||||
[_disconnectButton setTitle:[LocalizationHelper localizedStringForKey:@"Disconnect"]];
|
[_disconnectButton setTitle:[LocalizationHelper localizedStringForKey:@"Disconnect"]];
|
||||||
}
|
}
|
||||||
@@ -1066,7 +1066,7 @@ const int FrontViewPositionNone = 0xff;
|
|||||||
UIImage *image = [[UIImage systemImageNamed:@"ellipsis.circle" withConfiguration:config] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
|
UIImage *image = [[UIImage systemImageNamed:@"ellipsis.circle" withConfiguration:config] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
|
||||||
[_moreButton setImage:image];
|
[_moreButton setImage:image];
|
||||||
_moreButton.imageInsets = GenericUtils.liquidGlassEnabled ? UIEdgeInsetsMake(0, 0, 0, 0.75) : UIEdgeInsetsMake(20, 0, 0, -10);
|
_moreButton.imageInsets = GenericUtils.liquidGlassEnabled ? UIEdgeInsetsMake(0, 0, 0, 0.75) : UIEdgeInsetsMake(20, 0, 0, -10);
|
||||||
if(GenericUtils.liquidGlassEnabled) _moreButton.tintColor = [ThemeManager appPrimaryColor];
|
if(GenericUtils.liquidGlassEnabled) _moreButton.tintColor = ThemeManager.appPrimaryColor;
|
||||||
} else {
|
} else {
|
||||||
[_moreButton setTitle:[LocalizationHelper localizedStringForKey:@"Options"]];
|
[_moreButton setTitle:[LocalizationHelper localizedStringForKey:@"Options"]];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
MenuSectionView *otherSection;
|
MenuSectionView *otherSection;
|
||||||
MenuSectionView *experimentalSection;
|
MenuSectionView *experimentalSection;
|
||||||
NSMutableSet* hiddenStacks;
|
NSMutableSet* hiddenStacks;
|
||||||
|
|
||||||
GCController *capturedController;
|
GCController *capturedController;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -750,7 +750,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
label.textAlignment = NSTextAlignmentCenter;
|
label.textAlignment = NSTextAlignmentCenter;
|
||||||
// label.adjustsFontSizeToFitWidth = YES;
|
// label.adjustsFontSizeToFitWidth = YES;
|
||||||
label.accessibilityIdentifier = @"dynamicLabel";
|
label.accessibilityIdentifier = @"dynamicLabel";
|
||||||
label.textColor = [ThemeManager appPrimaryColor];
|
label.textColor = ThemeManager.appPrimaryColor;
|
||||||
label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
|
label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
|
||||||
label.translatesAutoresizingMaskIntoConstraints = NO;
|
label.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
[stack addSubview:label];
|
[stack addSubview:label];
|
||||||
@@ -1120,7 +1120,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
view.layer.cornerRadius = 6;
|
view.layer.cornerRadius = 6;
|
||||||
view.layer.masksToBounds = YES;
|
view.layer.masksToBounds = YES;
|
||||||
view.clipsToBounds = YES;
|
view.clipsToBounds = YES;
|
||||||
view.backgroundColor = [ThemeManager appPrimaryColorWithAlpha];
|
view.backgroundColor = ThemeManager.appPrimaryColorWithAlpha;
|
||||||
} completion:^(BOOL finished){
|
} completion:^(BOOL finished){
|
||||||
if(completion) completion();
|
if(completion) completion();
|
||||||
}];
|
}];
|
||||||
@@ -1324,7 +1324,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
}
|
}
|
||||||
button.accessibilityIdentifier = @"infoButton";
|
button.accessibilityIdentifier = @"infoButton";
|
||||||
button.translatesAutoresizingMaskIntoConstraints = NO;
|
button.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
button.tintColor = [ThemeManager appPrimaryColor];
|
button.tintColor = ThemeManager.appPrimaryColor;
|
||||||
|
|
||||||
[button addTarget:self action:@selector(infoButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
|
[button addTarget:self action:@selector(infoButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
|
||||||
@@ -3333,7 +3333,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
label.layer.filters = nil;
|
label.layer.filters = nil;
|
||||||
label.textColor = [UIColor clearColor];
|
label.textColor = [UIColor clearColor];
|
||||||
label.textColor = [ThemeManager textColor];
|
label.textColor = ThemeManager.textColor;
|
||||||
} else {
|
} else {
|
||||||
UIView *view = label;
|
UIView *view = label;
|
||||||
bool isPartOfSelector = false;
|
bool isPartOfSelector = false;
|
||||||
@@ -3357,9 +3357,9 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
UISegmentedControl *selector = (UISegmentedControl *)subview;
|
UISegmentedControl *selector = (UISegmentedControl *)subview;
|
||||||
if (@available(iOS 13.0, *)) {
|
if (@available(iOS 13.0, *)) {
|
||||||
selector.selectedSegmentTintColor = [UIColor clearColor];
|
selector.selectedSegmentTintColor = [UIColor clearColor];
|
||||||
selector.selectedSegmentTintColor = [ThemeManager appSecondaryColor];
|
selector.selectedSegmentTintColor = ThemeManager.appSecondaryColor;
|
||||||
} else {
|
} else {
|
||||||
selector.tintColor = [ThemeManager appSecondaryColor];
|
selector.tintColor = ThemeManager.appSecondaryColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[self updateThemeForSelectors:subview];
|
[self updateThemeForSelectors:subview];
|
||||||
@@ -3371,21 +3371,34 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
if ([subview isKindOfClass:[UISlider class]]) {
|
if ([subview isKindOfClass:[UISlider class]]) {
|
||||||
UISlider *slider = (UISlider *)subview;
|
UISlider *slider = (UISlider *)subview;
|
||||||
slider.tintColor = [UIColor clearColor];
|
slider.tintColor = [UIColor clearColor];
|
||||||
slider.tintColor = [ThemeManager appSecondaryColor];
|
slider.tintColor = ThemeManager.appSecondaryColor;
|
||||||
|
if(GenericUtils.liquidGlassEnabled) slider.maximumTrackTintColor = ThemeManager.liquidGlassSliderMaxTrackTint;
|
||||||
}
|
}
|
||||||
[self updateThemeForSliders:subview];
|
[self updateThemeForSliders:subview];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)updateThemeForSwitches:(UIView *)view {
|
||||||
|
if (@available(iOS 26.0, *)) {
|
||||||
|
for (UIView *subview in view.subviews) {
|
||||||
|
if ([subview isKindOfClass:[UISwitch class]]) {
|
||||||
|
UISwitch *uiSwitch = (UISwitch *)subview;
|
||||||
|
[GenericUtils applyOffTintColor:uiSwitch];
|
||||||
|
}
|
||||||
|
[self updateThemeForSwitches:subview];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (void)updateThemeForMenuSections:(UIView *)view {
|
- (void)updateThemeForMenuSections:(UIView *)view {
|
||||||
for (UIView *subview in view.subviews) {
|
for (UIView *subview in view.subviews) {
|
||||||
if ([subview isKindOfClass:[MenuSectionView class]]) {
|
if ([subview isKindOfClass:[MenuSectionView class]]) {
|
||||||
MenuSectionView *section = (MenuSectionView *)subview;
|
MenuSectionView *section = (MenuSectionView *)subview;
|
||||||
section.titleLabel.textColor = [ThemeManager sectionLabelTextColor];
|
section.titleLabel.textColor = ThemeManager.sectionLabelTextColor;
|
||||||
section.iconImageView.tintColor = [UIColor clearColor];
|
section.iconImageView.tintColor = [UIColor clearColor];
|
||||||
section.iconImageView.tintColor = [ThemeManager sectionLabelTextColor];
|
section.iconImageView.tintColor = ThemeManager.sectionLabelTextColor;
|
||||||
section.separatorLine.backgroundColor = [UIColor clearColor];
|
section.separatorLine.backgroundColor = [UIColor clearColor];
|
||||||
section.separatorLine.backgroundColor = [ThemeManager separatorColor];
|
section.separatorLine.backgroundColor = ThemeManager.separatorColor;
|
||||||
}
|
}
|
||||||
[self updateThemeForMenuSections:subview];
|
[self updateThemeForMenuSections:subview];
|
||||||
}
|
}
|
||||||
@@ -3393,11 +3406,12 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
|
|
||||||
- (void)updateTheme{
|
- (void)updateTheme{
|
||||||
self.view.backgroundColor = [UIColor clearColor];
|
self.view.backgroundColor = [UIColor clearColor];
|
||||||
self.view.backgroundColor = [ThemeManager menuBackgroundColor];
|
self.view.backgroundColor = ThemeManager.menuBackgroundColor;
|
||||||
[self updateThemeForMenuSections:self.view];
|
[self updateThemeForMenuSections:self.view];
|
||||||
[self updateThemeForLabels:self.view];
|
[self updateThemeForLabels:self.view];
|
||||||
[self updateThemeForSelectors:self.view];
|
[self updateThemeForSelectors:self.view];
|
||||||
[self updateThemeForSliders:self.view];
|
[self updateThemeForSliders:self.view];
|
||||||
|
if(GenericUtils.liquidGlassEnabled) [self updateThemeForSwitches:self.view];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) frameQueueSizeSliderMoved:(UISlider* )sender {
|
- (void) frameQueueSizeSliderMoved:(UISlider* )sender {
|
||||||
|
|||||||
@@ -585,9 +585,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateTheme {
|
- (void)updateTheme {
|
||||||
self.view.backgroundColor = [ThemeManager menuBackgroundColor];
|
self.view.backgroundColor = ThemeManager.menuBackgroundColor;
|
||||||
_stageLabel.textColor = [[ThemeManager textColor] colorWithAlphaComponent:0.9];
|
_stageLabel.textColor = [ThemeManager.textColor colorWithAlphaComponent:0.9];
|
||||||
_spinner.color = [ThemeManager textColor];
|
_spinner.color = ThemeManager.textColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidLoad
|
- (void)viewDidLoad
|
||||||
|
|||||||
Reference in new issue
Block a user