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