UI improvements
This commit is contained in:
1 parent
bc98b43de2
commit
4b56a44a47
15 files changed
+354
-255
No files matched your search
@@ -8,7 +8,7 @@
|
||||
|
||||
#import "HostCardView.h"
|
||||
#import "LocalizationHelper.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
#import "FixedTintImageView.h"
|
||||
|
||||
|
||||
@@ -574,7 +574,7 @@ static const float REFRESH_CYCLE = 2.0f;
|
||||
case StateOffline:
|
||||
[_hostSpinner stopAnimating];
|
||||
// _iconBackgroundView.backgroundColor = _userIterfaceStyle == UIUserInterfaceStyleDark ? [UIColor appBackgroundColorDark] : [UIColor appBackgroundColorLight];
|
||||
_iconBackgroundView.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
_iconBackgroundView.backgroundColor = [ThemeManager offlineHostIconBackgroundColor];
|
||||
_statusLabel.textColor = [ThemeManager textColorGray];
|
||||
_statusLabel.text = [LocalizationHelper localizedStringForKey: @"Offline"];
|
||||
_statusIcon.tintColor = [ThemeManager textColorGray];
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
@property (nonatomic, strong) UIStackView *rootStackView;
|
||||
@property (nonatomic, assign) CGFloat leadingTrailingPadding;
|
||||
@property (nonatomic, assign) CGFloat separatorLinePadding;
|
||||
@property (nonatomic, strong) UILabel *titleLabel;
|
||||
@property (nonatomic, copy) NSString *sectionTitle;
|
||||
@property (nonatomic, copy) NSString *identifier;
|
||||
@property (nonatomic, assign) BOOL isExpanded;
|
||||
@@ -40,8 +41,8 @@
|
||||
@property (nonatomic, weak) id<MenuSectionDelegate> delegate; // Delegate property
|
||||
|
||||
// 方法
|
||||
- (void)setSectionWithIcon:(UIImage *)icon andSize:(CGFloat)size;
|
||||
- (void)setSectionWithIcon:(UIImage *)icon size:(CGFloat)size weight:(UIImageSymbolWeight)weight API_AVAILABLE(ios(13.0));
|
||||
- (void)setSectionWithIcon:(UIImage *)icon size:(CGFloat)size sizeConstraint:(CGFloat)constant;
|
||||
- (void)setSectionWithIcon:(UIImage *)icon size:(CGFloat)size weight:(UIImageSymbolWeight)weight sizeConstraint:(CGFloat)constant API_AVAILABLE(ios(13.0));
|
||||
- (void)addSubStackView:(UIStackView *)stackView;
|
||||
- (void)addToParentStack:(UIStackView *)parentStack;
|
||||
- (void)removeSubStackView:(UIStackView *)stackView;
|
||||
|
||||
+32
-22
@@ -8,12 +8,11 @@
|
||||
// MenuSectionView.m
|
||||
|
||||
#import "MenuSectionView.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
|
||||
|
||||
@interface MenuSectionView ()
|
||||
|
||||
@property (nonatomic, strong) UILabel *titleLabel;
|
||||
@property (nonatomic, strong) UIButton *toggleButton;
|
||||
@property (nonatomic, strong) UIButton *toggleArea;
|
||||
@property (nonatomic, strong) NSLayoutConstraint *heightConstraint;
|
||||
@@ -52,7 +51,7 @@ static BOOL overridePersistedFoldState = YES;
|
||||
|
||||
- (void)commonInit {
|
||||
// 默认值
|
||||
_leadingTrailingPadding = 0;
|
||||
_leadingTrailingPadding = 5;
|
||||
_separatorLinePadding = 40;
|
||||
_sectionTitle = @"Section";
|
||||
_isExpanded = YES;
|
||||
@@ -83,7 +82,8 @@ static BOOL overridePersistedFoldState = YES;
|
||||
// 标题标签
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.text = _sectionTitle;
|
||||
_titleLabel.font = [UIFont systemFontOfSize:23 weight:UIFontWeightMedium];
|
||||
_titleLabel.accessibilityIdentifier = @"menuSectionTitleLabel";
|
||||
_titleLabel.font = [UIFont systemFontOfSize:19 weight:UIFontWeightSemibold];
|
||||
_titleLabel.textColor = [ThemeManager textColor];
|
||||
_titleLabel.textAlignment = NSTextAlignmentLeft;
|
||||
_titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
@@ -94,7 +94,7 @@ static BOOL overridePersistedFoldState = YES;
|
||||
_toggleArea = [UIButton buttonWithType:UIButtonTypeSystem];
|
||||
if (@available(iOS 13.0, *)) {
|
||||
UIImageSymbolConfiguration *config = [UIImageSymbolConfiguration configurationWithPointSize:_headerViewHeight*0.31 weight:UIImageSymbolWeightBold];
|
||||
[_toggleButton setImage:[UIImage systemImageNamed:@"chevron.left" withConfiguration:config] forState:UIControlStateNormal];
|
||||
[_toggleButton setImage:[UIImage systemImageNamed:@"chevron.right" withConfiguration:config] forState:UIControlStateNormal];
|
||||
} else {
|
||||
// [_toggleButton setTitle:@"<" forState:UIControlStateNormal];
|
||||
}
|
||||
@@ -142,20 +142,11 @@ static BOOL overridePersistedFoldState = YES;
|
||||
[_headerView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor],
|
||||
[_headerView.heightAnchor constraintEqualToConstant:_headerViewHeight]
|
||||
]];
|
||||
|
||||
// 图标约束
|
||||
[NSLayoutConstraint activateConstraints:@[
|
||||
[_iconImageView.centerXAnchor constraintEqualToAnchor:_headerView.leadingAnchor constant:_leadingTrailingPadding+_headerViewHeight/2-3],
|
||||
[_iconImageView.centerYAnchor constraintEqualToAnchor:_headerView.centerYAnchor],
|
||||
// [_iconImageView.topAnchor constraintEqualToAnchor:_headerView.topAnchor],
|
||||
[_iconImageView.widthAnchor constraintEqualToConstant:_headerViewHeight-6],
|
||||
//[_iconImageView.heightAnchor constraintEqualToConstant:_headerViewHeight-6]
|
||||
]];
|
||||
|
||||
|
||||
// 标题约束
|
||||
if(@available(iOS 13.0, *)){
|
||||
[NSLayoutConstraint activateConstraints:@[
|
||||
[_titleLabel.leadingAnchor constraintEqualToAnchor:_iconImageView.trailingAnchor constant:8],
|
||||
[_titleLabel.leadingAnchor constraintEqualToAnchor:self.leadingAnchor constant:39],
|
||||
[_titleLabel.centerYAnchor constraintEqualToAnchor:_headerView.centerYAnchor],
|
||||
[_titleLabel.trailingAnchor constraintEqualToAnchor:_toggleButton.leadingAnchor constant:-8]
|
||||
]];
|
||||
@@ -179,7 +170,7 @@ static BOOL overridePersistedFoldState = YES;
|
||||
[_toggleArea.centerYAnchor constraintEqualToAnchor:_headerView.centerYAnchor],
|
||||
[_toggleArea.trailingAnchor constraintEqualToAnchor:_toggleButton.leadingAnchor],
|
||||
//[_toggleArea.widthAnchor constraintEqualToConstant:_headerViewHeight],
|
||||
[_toggleArea.heightAnchor constraintEqualToConstant:_headerViewHeight]
|
||||
[_toggleArea.heightAnchor constraintEqualToConstant:_headerViewHeight+25]
|
||||
]];
|
||||
|
||||
[self layoutIfNeeded];
|
||||
@@ -198,9 +189,9 @@ static BOOL overridePersistedFoldState = YES;
|
||||
//[_separatorLine.leadingAnchor constraintEqualToAnchor:self.leadingAnchor],
|
||||
//[_separatorLine.trailingAnchor constraintEqualToAnchor:self.trailingAnchor],
|
||||
[_separatorLine.centerXAnchor constraintEqualToAnchor:self.centerXAnchor],
|
||||
[_separatorLine.widthAnchor constraintEqualToConstant:1000], // //mark: settingMenuLayout
|
||||
[_separatorLine.widthAnchor constraintEqualToAnchor:self.widthAnchor constant:-5], // //mark: settingMenuLayout
|
||||
[_separatorLine.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
|
||||
[_separatorLine.heightAnchor constraintEqualToConstant:2]
|
||||
[_separatorLine.heightAnchor constraintEqualToConstant:0.7]
|
||||
]];
|
||||
|
||||
[NSLayoutConstraint activateConstraints:@[
|
||||
@@ -211,7 +202,7 @@ static BOOL overridePersistedFoldState = YES;
|
||||
|
||||
#pragma mark - Public Methods
|
||||
|
||||
- (void)setSectionWithIcon:(UIImage *)icon andSize:(CGFloat)size{
|
||||
- (void)setSectionWithIcon:(UIImage *)icon size:(CGFloat)size sizeConstraint:(CGFloat)constant{
|
||||
if (@available(iOS 13.0, *)) {
|
||||
UIImageSymbolConfiguration *config;
|
||||
if(icon.isSymbolImage) config = [UIImageSymbolConfiguration configurationWithPointSize:size weight:UIImageSymbolWeightBold];
|
||||
@@ -225,10 +216,19 @@ static BOOL overridePersistedFoldState = YES;
|
||||
}
|
||||
_iconImageView.tintColor = [ThemeManager textColor];
|
||||
_iconImageView.hidden = (icon == nil);
|
||||
|
||||
// 图标约束
|
||||
[NSLayoutConstraint activateConstraints:@[
|
||||
[_iconImageView.centerXAnchor constraintEqualToAnchor:_headerView.leadingAnchor constant:_leadingTrailingPadding+_headerViewHeight/2-3],
|
||||
[_iconImageView.centerYAnchor constraintEqualToAnchor:_headerView.centerYAnchor constant:-0.5],
|
||||
[_iconImageView.widthAnchor constraintEqualToConstant:_headerViewHeight+constant],
|
||||
[_iconImageView.heightAnchor constraintEqualToConstant:_headerViewHeight+constant]
|
||||
]];
|
||||
|
||||
[self updateLayout];
|
||||
}
|
||||
|
||||
- (void)setSectionWithIcon:(UIImage *)icon size:(CGFloat)size weight:(UIImageSymbolWeight)weight API_AVAILABLE(ios(13.0)){
|
||||
- (void)setSectionWithIcon:(UIImage *)icon size:(CGFloat)size weight:(UIImageSymbolWeight)weight sizeConstraint:(CGFloat)constant API_AVAILABLE(ios(13.0)){
|
||||
if (@available(iOS 13.0, *)) {
|
||||
UIImageSymbolConfiguration *config;
|
||||
if(icon.isSymbolImage) config = [UIImageSymbolConfiguration configurationWithPointSize:size weight:weight];
|
||||
@@ -242,6 +242,16 @@ static BOOL overridePersistedFoldState = YES;
|
||||
}
|
||||
_iconImageView.tintColor = [ThemeManager textColor];
|
||||
_iconImageView.hidden = (icon == nil);
|
||||
|
||||
// 图标约束
|
||||
[NSLayoutConstraint activateConstraints:@[
|
||||
[_iconImageView.centerXAnchor constraintEqualToAnchor:_headerView.leadingAnchor constant:_leadingTrailingPadding+_headerViewHeight/2-3],
|
||||
[_iconImageView.centerYAnchor constraintEqualToAnchor:_headerView.centerYAnchor],
|
||||
// [_iconImageView.topAnchor constraintEqualToAnchor:_headerView.topAnchor],
|
||||
[_iconImageView.widthAnchor constraintEqualToConstant:_headerViewHeight+constant],
|
||||
[_iconImageView.heightAnchor constraintEqualToConstant:_headerViewHeight+constant]
|
||||
]];
|
||||
|
||||
[self updateLayout];
|
||||
}
|
||||
|
||||
@@ -381,7 +391,7 @@ static BOOL overridePersistedFoldState = YES;
|
||||
self.heightConstraint.constant = headerHeight + _headerViewVerticalSpacing + rootStackViewHeight + _separatorLinePadding + 1;
|
||||
|
||||
[UIView animateWithDuration:0 animations:^{
|
||||
self.toggleButton.transform = CGAffineTransformMakeRotation(M_PI+M_PI_2);
|
||||
self.toggleButton.transform = CGAffineTransformMakeRotation(M_PI/2);
|
||||
[NSLayoutConstraint activateConstraints:@[
|
||||
[self.rootStackView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor constant:-self.separatorLinePadding],
|
||||
// [self.rootStackView.topAnchor constraintEqualToAnchor:self.headerView.bottomAnchor constant:0],
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
//
|
||||
// ThemeManager.h
|
||||
// VoidLink
|
||||
//
|
||||
// Created by True砖家 on 2025.5.25.
|
||||
// Copyright © 2025 True砖家 @ Bilibili. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
extern NSString * const ThemeDidChangeNotification;
|
||||
|
||||
@interface ThemeManager:NSObject
|
||||
|
||||
@property (class, nonatomic, assign) UIUserInterfaceStyle userInterfaceStyle;
|
||||
+ (UIColor *)appPrimaryColor;
|
||||
+ (UIColor *)appSecondaryColor;
|
||||
+ (UIColor *)appPrimaryColorWithAlpha;
|
||||
+ (UIColor *)widgetBackgroundColor;
|
||||
+ (UIColor *)appBackgroundColor;
|
||||
+ (UIColor *)separatorColor;
|
||||
+ (UIColor *)textColor;
|
||||
+ (UIColor *)textColorGray;
|
||||
+ (UIColor *)lowProfileGray;
|
||||
+ (UIColor *)textTintColorWithAlpha;
|
||||
|
||||
@end
|
||||
@@ -1,152 +0,0 @@
|
||||
//
|
||||
// ThemeManager.h
|
||||
// VoidLink
|
||||
//
|
||||
// Created by True砖家 on 2025.5.25.
|
||||
// Copyright © 2025 True砖家 @ Bilibili. All rights reserved.
|
||||
//
|
||||
|
||||
#import "ThemeManager.h"
|
||||
|
||||
NSString * const ThemeDidChangeNotification = @"ThemeDidChangeNotification";
|
||||
|
||||
@implementation ThemeManager
|
||||
|
||||
static UIUserInterfaceStyle _privateUserInterfaceStyle = UIUserInterfaceStyleUnspecified;
|
||||
static UIUserInterfaceStyle _userInterfaceStyle;
|
||||
|
||||
+ (UIColor *)setPublicUIStyle{
|
||||
if (@available(iOS 13.0, *)) {
|
||||
UITraitCollection *traitCollection = [UIScreen mainScreen].traitCollection;
|
||||
if(_privateUserInterfaceStyle == UIUserInterfaceStyleUnspecified) {
|
||||
_userInterfaceStyle = traitCollection.userInterfaceStyle;
|
||||
}
|
||||
else _userInterfaceStyle = _privateUserInterfaceStyle;
|
||||
return [UIColor clearColor];
|
||||
} else {
|
||||
return [UIColor clearColor];
|
||||
}
|
||||
}
|
||||
|
||||
+ (UIUserInterfaceStyle)userInterfaceStyle {
|
||||
[ThemeManager setPublicUIStyle];
|
||||
return _userInterfaceStyle;
|
||||
}
|
||||
|
||||
+ (void)setUserInterfaceStyle:(UIUserInterfaceStyle)style {
|
||||
_privateUserInterfaceStyle = style;
|
||||
if (_userInterfaceStyle == style) {
|
||||
return;
|
||||
}
|
||||
[ThemeManager setPublicUIStyle];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:ThemeDidChangeNotification object:nil];
|
||||
}
|
||||
|
||||
+ (UIColor *)appBackgroundColor {
|
||||
[ThemeManager setPublicUIStyle];
|
||||
switch (self.userInterfaceStyle) {
|
||||
case UIUserInterfaceStyleLight:
|
||||
return [UIColor colorWithRed:242.0/255.0 green:242.0/255.0 blue:247.0/255.0 alpha:1.0];
|
||||
break;
|
||||
case UIUserInterfaceStyleDark:
|
||||
default:
|
||||
return [UIColor colorWithRed:28.0/255.0 green:28.0/255.0 blue:30.0/255.0 alpha:1.0];
|
||||
//return [UIColor blackColor];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+ (UIColor *)widgetBackgroundColor {
|
||||
[ThemeManager setPublicUIStyle];
|
||||
switch (self.userInterfaceStyle) {
|
||||
case UIUserInterfaceStyleLight:
|
||||
return [UIColor whiteColor];
|
||||
break;
|
||||
case UIUserInterfaceStyleDark:
|
||||
default:
|
||||
return [UIColor colorWithRed:44.0/255.0 green:44.0/255.0 blue:46.0/255.0 alpha:1.0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+ (UIColor *)separatorColor {
|
||||
[ThemeManager setPublicUIStyle];
|
||||
switch (self.userInterfaceStyle) {
|
||||
case UIUserInterfaceStyleLight:
|
||||
return [UIColor colorWithWhite:0.1 alpha:0.28];
|
||||
break;
|
||||
case UIUserInterfaceStyleDark:
|
||||
default:
|
||||
return [UIColor colorWithWhite:0.28 alpha:1.0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+ (UIColor *)textColor {
|
||||
[ThemeManager setPublicUIStyle];
|
||||
switch (self.userInterfaceStyle) {
|
||||
case UIUserInterfaceStyleLight:
|
||||
return [UIColor blackColor];
|
||||
break;
|
||||
case UIUserInterfaceStyleDark:
|
||||
default:
|
||||
return [UIColor whiteColor];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+ (UIColor *)appPrimaryColor {
|
||||
return [UIColor colorWithRed:0.0 green:0.48 blue:1.0 alpha:1.0]; // #0A84FF
|
||||
}
|
||||
|
||||
+ (UIColor *)appSecondaryColor {
|
||||
// return [UIColor colorWithRed:0.0 green:0.319 blue:0.64 alpha:1.0]; // 可换其他常用色
|
||||
UIColor* originalColor = [ThemeManager appPrimaryColor];
|
||||
|
||||
UIColor *grayColor = [UIColor grayColor];
|
||||
CGFloat mixRatio = 0.3; // 混合比例,0.0 到 1.0
|
||||
|
||||
CGFloat r1, g1, b1, a1;
|
||||
CGFloat r2, g2, b2, a2;
|
||||
|
||||
[originalColor getRed:&r1 green:&g1 blue:&b1 alpha:&a1];
|
||||
[grayColor getRed:&r2 green:&g2 blue:&b2 alpha:&a2];
|
||||
|
||||
CGFloat r = r1 * (1 - mixRatio) + r2 * mixRatio;
|
||||
CGFloat g = g1 * (1 - mixRatio) + g2 * mixRatio;
|
||||
CGFloat b = b1 * (1 - mixRatio) + b2 * mixRatio;
|
||||
CGFloat a = a1 * (1 - mixRatio) + a2 * mixRatio;
|
||||
|
||||
UIColor *tonedColor = [UIColor colorWithRed:r green:g blue:b alpha:a];
|
||||
|
||||
return tonedColor; // 可换其他常用色
|
||||
}
|
||||
|
||||
+ (UIColor *)appPrimaryColorWithAlpha {
|
||||
[ThemeManager setPublicUIStyle];
|
||||
switch (self.userInterfaceStyle) {
|
||||
case UIUserInterfaceStyleLight:
|
||||
return [[ThemeManager appPrimaryColor] colorWithAlphaComponent:0.24]; // #0A84FF
|
||||
break;
|
||||
case UIUserInterfaceStyleDark:
|
||||
default:
|
||||
return [[ThemeManager appPrimaryColor] colorWithAlphaComponent:0.24];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+ (UIColor *)textTintColorWithAlpha{
|
||||
return [[ThemeManager appPrimaryColor] colorWithAlphaComponent:0.24];
|
||||
}
|
||||
|
||||
+ (UIColor *)textColorGray{
|
||||
return [UIColor colorWithRed:0.55 green:0.55 blue:0.6 alpha:0.95];
|
||||
}
|
||||
|
||||
+ (UIColor *)lowProfileGray{
|
||||
return [UIColor colorWithRed:0.65 green:0.65 blue:0.65 alpha:0.4];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,273 @@
|
||||
//
|
||||
// ThemeManager.swift
|
||||
// VoidLink
|
||||
//
|
||||
// Created by True砖家 on 2026/3/6.
|
||||
// Copyright © 2026 True砖家 @ Bilibili. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
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
|
||||
if _privateUserInterfaceStyle == .unspecified {
|
||||
_userInterfaceStyle = traitCollection.userInterfaceStyle
|
||||
} else {
|
||||
_userInterfaceStyle = _privateUserInterfaceStyle
|
||||
}
|
||||
}
|
||||
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 {
|
||||
_ = setPublicUIStyle()
|
||||
|
||||
switch userInterfaceStyle() {
|
||||
case .light:
|
||||
return UIColor(
|
||||
red: 242.0/255.0,
|
||||
green: 242.0/255.0,
|
||||
blue: 247.0/255.0,
|
||||
alpha: 1
|
||||
)
|
||||
|
||||
default:
|
||||
if #available(iOS 13.0, *) {
|
||||
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
||||
return UIColor.secondarySystemBackground.resolvedColor(with: darkTraits)
|
||||
} else {
|
||||
return UIColor(
|
||||
red: 28.0/255.0,
|
||||
green: 28.0/255.0,
|
||||
blue: 30.0/255.0,
|
||||
alpha: 1
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc class func hostViewBackgroundColor() -> UIColor {
|
||||
_ = setPublicUIStyle()
|
||||
|
||||
switch userInterfaceStyle() {
|
||||
case .light:
|
||||
return UIColor(
|
||||
red: 242.0/255.0,
|
||||
green: 242.0/255.0,
|
||||
blue: 247.0/255.0,
|
||||
alpha: 1
|
||||
)
|
||||
|
||||
default:
|
||||
if #available(iOS 13.0, *) {
|
||||
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
||||
return UIColor.systemGroupedBackground.resolvedColor(with: darkTraits)
|
||||
} else {
|
||||
return UIColor.black
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc class func offlineHostIconBackgroundColor() -> UIColor {
|
||||
_ = setPublicUIStyle()
|
||||
|
||||
switch userInterfaceStyle() {
|
||||
case .light:
|
||||
return UIColor(
|
||||
red: 242.0/255.0,
|
||||
green: 242.0/255.0,
|
||||
blue: 247.0/255.0,
|
||||
alpha: 1
|
||||
)
|
||||
|
||||
default:
|
||||
return UIColor(
|
||||
red: 17.0/255.0,
|
||||
green: 17.0/255.0,
|
||||
blue: 19.0/255.0,
|
||||
alpha: 1
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@objc class func widgetBackgroundColor() -> UIColor {
|
||||
_ = setPublicUIStyle()
|
||||
|
||||
switch userInterfaceStyle() {
|
||||
case .light:
|
||||
return UIColor.white
|
||||
default:
|
||||
if #available(iOS 13.0, *) {
|
||||
// return UIColor.secondarySystemBackground
|
||||
let darkTraits = UITraitCollection(userInterfaceStyle: .dark)
|
||||
return UIColor.secondarySystemGroupedBackground.resolvedColor(with: darkTraits)
|
||||
} else {
|
||||
return UIColor(
|
||||
red: 44.0/255.0,
|
||||
green: 44.0/255.0,
|
||||
blue: 46.0/255.0,
|
||||
alpha: 1
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc class func separatorColor() -> UIColor {
|
||||
_ = setPublicUIStyle()
|
||||
|
||||
switch userInterfaceStyle() {
|
||||
case .light:
|
||||
if #available(iOS 13.0, *) {
|
||||
let lightTraits = UITraitCollection(userInterfaceStyle: .light)
|
||||
return 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 UIColor.separator.resolvedColor(with: darkTraits)
|
||||
} else {return UIColor(white: 0.28, alpha: 1)}
|
||||
}
|
||||
}
|
||||
|
||||
@objc class func hostCardSeparatorColor() -> 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
|
||||
default:
|
||||
return UIColor.white
|
||||
}
|
||||
}
|
||||
|
||||
@objc class func sectionLabelTextColor() -> UIColor {
|
||||
_ = setPublicUIStyle()
|
||||
|
||||
switch userInterfaceStyle() {
|
||||
case .light:
|
||||
if #available(iOS 13.0, *) {
|
||||
let traits = UITraitCollection(userInterfaceStyle: .light)
|
||||
return UIColor.label.resolvedColor(with: traits)
|
||||
} else {
|
||||
return UIColor.black
|
||||
}
|
||||
default:
|
||||
if #available(iOS 13.0, *) {
|
||||
let traits = UITraitCollection(userInterfaceStyle: .dark)
|
||||
return UIColor.label.resolvedColor(with: traits)
|
||||
} else {
|
||||
return UIColor.black
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc class func appPrimaryColor() -> UIColor {
|
||||
return UIColor(
|
||||
red: 0.0,
|
||||
green: 0.48,
|
||||
blue: 1.0,
|
||||
alpha: 1.0
|
||||
) // #0A84FF
|
||||
}
|
||||
|
||||
@objc class func 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 class func textTintColorWithAlpha() -> UIColor {
|
||||
return appPrimaryColor().withAlphaComponent(0.24)
|
||||
}
|
||||
|
||||
@objc class func textColorGray() -> UIColor {
|
||||
return UIColor(
|
||||
red: 0.55,
|
||||
green: 0.55,
|
||||
blue: 0.6,
|
||||
alpha: 0.95
|
||||
)
|
||||
}
|
||||
|
||||
@objc class func lowProfileGray() -> UIColor {
|
||||
return UIColor(
|
||||
red: 0.65,
|
||||
green: 0.65,
|
||||
blue: 0.65,
|
||||
alpha: 0.4
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#import "UIAppView.h"
|
||||
#import "AppAssetManager.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
|
||||
static const float REFRESH_CYCLE = 1.0f;
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
#import "OSCProfilesManager.h"
|
||||
#import "LocalizationHelper.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
#import "ThemeManager.h"
|
||||
// #import "ThemeManager.h"
|
||||
#import "DataManager.h"
|
||||
|
||||
@interface LayoutOnScreenControlsViewController ()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#import "HostCollectionViewController.h"
|
||||
#import "HostCardView.h"
|
||||
#import "TemporaryHost.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
|
||||
static const CGFloat cellOffsetY = 20;
|
||||
|
||||
@@ -104,7 +104,7 @@ static const CGFloat cellOffsetY = 20;
|
||||
}
|
||||
|
||||
- (void)updateTheme {
|
||||
self.collectionView.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
self.collectionView.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
||||
for (HostCell *cell in [self.collectionView visibleCells]) {
|
||||
[cell.cardView updateTheme];
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#import "Plot.h"
|
||||
#import "CustomEdgeSlideGestureRecognizer.h"
|
||||
#import "DataManager.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "FixedTintImageView.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
|
||||
@@ -376,7 +375,7 @@ static NSMutableSet* hostList;
|
||||
// [self.view bringSubviewToFront:self.collectionView];
|
||||
self.hostCollectionVC.view.hidden = YES;
|
||||
self.collectionView.hidden = NO;
|
||||
self.collectionView.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
self.collectionView.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
||||
//self.view.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
|
||||
[self.collectionView setContentOffset:CGPointZero animated:NO];
|
||||
@@ -1481,7 +1480,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 appBackgroundColor]; // ios 14 depend on this, do not remove
|
||||
self.navigationController.navigationBar.barTintColor = [ThemeManager hostViewBackgroundColor]; // ios 14 depend on this, do not remove
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1490,7 +1489,7 @@ static NSMutableSet* hostList;
|
||||
Class appearanceClass = NSClassFromString(@"UINavigationBarAppearance");
|
||||
navBarAppearanceStandard = [[appearanceClass alloc] init];
|
||||
[navBarAppearanceStandard performSelector:@selector(configureWithOpaqueBackground)]; // 不透明
|
||||
[navBarAppearanceStandard setValue:[ThemeManager appBackgroundColor] forKey:@"backgroundColor"]; // 设置你需要的背景色
|
||||
[navBarAppearanceStandard setValue:[ThemeManager hostViewBackgroundColor] forKey:@"backgroundColor"]; // 设置你需要的背景色
|
||||
[navBarAppearanceStandard setValue:nil forKey:@"shadowColor"]; // 设置你需要的背景色
|
||||
NSDictionary* titleTextAttributes = @{
|
||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
||||
@@ -1547,12 +1546,12 @@ static NSMutableSet* hostList;
|
||||
}
|
||||
|
||||
- (void)updateTheme {
|
||||
self.view.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
self.hostCollectionVC.view.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
self.collectionView.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
self.view.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
||||
self.hostCollectionVC.view.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
||||
self.collectionView.backgroundColor = [ThemeManager hostViewBackgroundColor];
|
||||
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[navBarAppearanceStandard setValue:[ThemeManager appBackgroundColor] forKey:@"backgroundColor"];
|
||||
[navBarAppearanceStandard setValue:[ThemeManager hostViewBackgroundColor] forKey:@"backgroundColor"];
|
||||
NSDictionary* titleTextAttributes = @{
|
||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
||||
};
|
||||
@@ -1999,7 +1998,7 @@ static NSMutableSet* hostList;
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(updateTheme)
|
||||
name:ThemeDidChangeNotification
|
||||
name:ThemeManager.ThemeDidChangeNotification
|
||||
object:nil];
|
||||
|
||||
/* this makes background color works*/
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#import "SWRevealViewController.h"
|
||||
#import "LocalizationHelper.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
|
||||
|
||||
#pragma mark - StatusBar Helper Function
|
||||
@@ -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 appBackgroundColor];
|
||||
_safeAreaPadding.backgroundColor = [ThemeManager menuBackgroundColor];
|
||||
|
||||
// NSLog(@"_c.rearViewRevealWidth: %f", _c.rearViewRevealWidth);
|
||||
// _rearNavView.frame = CGRectMake(0, 0, _c.rearViewRevealWidth, 100);
|
||||
@@ -837,21 +837,21 @@ const int FrontViewPositionNone = 0xff;
|
||||
}
|
||||
|
||||
- (void)updateTheme {
|
||||
_contentView.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
_contentView.rearNavView.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
_contentView.safeAreaPadding.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
_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 appBackgroundColor];
|
||||
navBarAppearanceStandard.backgroundColor = [ThemeManager menuBackgroundColor];
|
||||
navBarAppearanceStandard.titleTextAttributes = @{
|
||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
||||
};
|
||||
_dockedNavBar.standardAppearance = navBarAppearanceStandard;
|
||||
_dockedNavBar.scrollEdgeAppearance = navBarAppearanceStandard;
|
||||
} else {
|
||||
_dockedNavBar.barTintColor = [ThemeManager appBackgroundColor];
|
||||
_dockedNavBar.barTintColor = [ThemeManager menuBackgroundColor];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -860,7 +860,7 @@ const int FrontViewPositionNone = 0xff;
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(updateTheme)
|
||||
name:ThemeDidChangeNotification
|
||||
name:ThemeManager.ThemeDidChangeNotification
|
||||
object:nil];
|
||||
[self updateTheme];
|
||||
}
|
||||
@@ -938,7 +938,7 @@ const int FrontViewPositionNone = 0xff;
|
||||
[_separatorLine.bottomAnchor constraintEqualToAnchor:_contentView.bottomAnchor constant:0],
|
||||
//[_separatorLine.leadingAnchor constraintEqualToAnchor:self.leadingAnchor constant:self.bounds.size.width-60],
|
||||
[_separatorLine.leadingAnchor constraintEqualToAnchor:_contentView.frontView.leadingAnchor constant:0],
|
||||
[_separatorLine.trailingAnchor constraintEqualToAnchor:_contentView.frontView.leadingAnchor constant:2], //mark: settingMenuLayout
|
||||
[_separatorLine.trailingAnchor constraintEqualToAnchor:_contentView.frontView.leadingAnchor constant:0.7], //mark: settingMenuLayout
|
||||
]];
|
||||
}
|
||||
|
||||
@@ -954,7 +954,7 @@ const int FrontViewPositionNone = 0xff;
|
||||
if (@available(iOS 13.0, *)) {
|
||||
UINavigationBarAppearance *navBarAppearanceStandard = [[UINavigationBarAppearance alloc] init];
|
||||
[navBarAppearanceStandard configureWithOpaqueBackground]; // 不透明
|
||||
navBarAppearanceStandard.backgroundColor =[ThemeManager appBackgroundColor];; // 设置你需要的背景色
|
||||
navBarAppearanceStandard.backgroundColor =[ThemeManager menuBackgroundColor];; // 设置你需要的背景色
|
||||
navBarAppearanceStandard.shadowColor = nil; // 去掉底部分割线(可选)
|
||||
navBarAppearanceStandard.titleTextAttributes = @{
|
||||
NSForegroundColorAttributeName: [ThemeManager textColor]
|
||||
@@ -965,7 +965,7 @@ const int FrontViewPositionNone = 0xff;
|
||||
_dockedNavBar.scrollEdgeAppearance = navBarAppearanceStandard;
|
||||
} else {
|
||||
_dockedNavBar.barTintColor = [UIColor clearColor];
|
||||
_dockedNavBar.barTintColor = [ThemeManager appBackgroundColor];
|
||||
_dockedNavBar.barTintColor = [ThemeManager menuBackgroundColor];
|
||||
_dockedNavBar.shadowImage = [UIImage new]; // remove bottom line for navbar
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#import "SettingsViewController.h"
|
||||
#import "TemporarySettings.h"
|
||||
#import "DataManager.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
#import "Connection.h"
|
||||
#import "Plot.h"
|
||||
#import "OSCProfilesManager.h"
|
||||
@@ -474,7 +474,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(updateTheme)
|
||||
name:ThemeDidChangeNotification
|
||||
name:ThemeManager.ThemeDidChangeNotification
|
||||
object:nil];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
@@ -790,7 +790,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
videoSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Video"];
|
||||
videoSection.identifier = @"SettingsSectionVideo";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[videoSection setSectionWithIcon:[UIImage systemImageNamed:@"waveform"] andSize:20];
|
||||
[videoSection setSectionWithIcon:[UIImage systemImageNamed:@"waveform"] size:13 sizeConstraint:-17];
|
||||
}
|
||||
[self addSetting:self.resolutionStack ofId:@"resolutionStack" withInfoTag:NO withDynamicLabel:YES to:videoSection];
|
||||
[self addSetting:self.fpsStack ofId:@"fpsStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
||||
@@ -812,7 +812,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
touchControlSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Touch Control"];
|
||||
touchControlSection.identifier = @"SettingsSectionTouch&Controller";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[touchControlSection setSectionWithIcon:[UIImage imageNamed:@"arcade.stick.console"] andSize:20.5];
|
||||
[touchControlSection setSectionWithIcon:[UIImage imageNamed:@"arcade.stick.console"] size:22 sizeConstraint:-15];
|
||||
}
|
||||
[self addSetting:self.touchModeStack ofId:@"touchModeStack" withInfoTag:YES withDynamicLabel:NO to:touchControlSection];
|
||||
[self addSetting:self.mousePointerVelocityStack ofId:@"mousePointerVelocityStack" withInfoTag:NO withDynamicLabel:YES to:touchControlSection];
|
||||
@@ -836,7 +836,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
controllerSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Controller"];
|
||||
controllerSection.identifier = @"SettingsSectionController";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[controllerSection setSectionWithIcon:[UIImage systemImageNamed:@"gamecontroller"] andSize:30];
|
||||
[controllerSection setSectionWithIcon:[UIImage systemImageNamed:@"gamecontroller"] size:30 sizeConstraint:-12];
|
||||
}
|
||||
[self addSetting:self.swapAbxyStack ofId:@"swapAbaxyStack" withInfoTag:NO withDynamicLabel:NO to:controllerSection];
|
||||
[self addSetting:self.hapticEngineStack ofId:@"hapticEngineStack" withInfoTag:NO withDynamicLabel:NO to:controllerSection];
|
||||
@@ -854,10 +854,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
motionControlSection.delegate = self;
|
||||
motionControlSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Motion Control"];
|
||||
motionControlSection.identifier = @"SettingsSectionMotionControl";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
// [motionControlSection setSectionWithIcon:[UIImage imageNamed:@"gyroscope"] andSize:23];
|
||||
[motionControlSection setSectionWithIcon:[UIImage imageNamed:@"gyroscope"] andSize:23];
|
||||
}
|
||||
if (@available(iOS 13.0, *)) [motionControlSection setSectionWithIcon:[UIImage imageNamed:@"gyroscope"] size:23 sizeConstraint:-20];
|
||||
[self addSetting:self.controllerGyroSwitchButtonStack ofId:@"controllerGyroSwitchButtonStack" withInfoTag:YES withDynamicLabel:YES to:motionControlSection];
|
||||
[self addSetting:self.reverseHoldButtonStack ofId:@"reverseHoldButtonStack" withInfoTag:YES withDynamicLabel:YES to:motionControlSection];
|
||||
[self addSetting:self.mapGyroToStack ofId:@"mapGyroToStack" withInfoTag:YES withDynamicLabel:NO to:motionControlSection];
|
||||
@@ -882,7 +879,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
pencilSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Drawing Toolkit"];
|
||||
pencilSection.identifier = @"SettingsSectionPencil";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[pencilSection setSectionWithIcon:[UIImage systemImageNamed:@"pencil.and.outline"] size:19 weight:UIImageSymbolWeightHeavy];
|
||||
[pencilSection setSectionWithIcon:[UIImage systemImageNamed:@"pencil.and.outline"] size:19 weight:UIImageSymbolWeightHeavy sizeConstraint:-17.5];
|
||||
}
|
||||
[self addSetting:self.pencilTickStack ofId:@"pencilTickStack" withInfoTag:YES withDynamicLabel:NO to:pencilSection];
|
||||
[self addSetting:self.pencilTickIntervalStack ofId:@"pencilTickIntervalStack" withInfoTag:NO withDynamicLabel:YES to:pencilSection];
|
||||
@@ -901,7 +898,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
gesturesSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Gestures"];
|
||||
gesturesSection.identifier = @"SettingsSectionGestures";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[gesturesSection setSectionWithIcon:[UIImage systemImageNamed:@"hand.draw"] andSize:23];
|
||||
[gesturesSection setSectionWithIcon:[UIImage systemImageNamed:@"hand.draw"] size:23 sizeConstraint:-13.3];
|
||||
}
|
||||
|
||||
[self addSetting:self.softKeyboardGestureStack ofId:@"softKeyboardGestureStack" withInfoTag:YES withDynamicLabel:NO to:gesturesSection];
|
||||
@@ -917,7 +914,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
peripheralSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Peripherals"];
|
||||
peripheralSection.identifier = @"SettingsSectionPeripherals";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[peripheralSection setSectionWithIcon:[UIImage imageNamed:@"cable.connector.video"] andSize:20];
|
||||
[peripheralSection setSectionWithIcon:[UIImage imageNamed:@"cable.connector.video"] size:20 sizeConstraint:-17.9];
|
||||
}
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[self addSetting:self.externalDisplayModeStack ofId:@"externalDisplayModeStack" withInfoTag:YES withDynamicLabel:NO to:peripheralSection];
|
||||
@@ -935,7 +932,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
audioSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Audio"];
|
||||
audioSection.identifier = @"SettingsSectionAudio";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[audioSection setSectionWithIcon:[UIImage imageNamed:@"speaker.wave.2"] andSize:20];
|
||||
[audioSection setSectionWithIcon:[UIImage imageNamed:@"speaker.wave.2"] size:20 sizeConstraint:-16.7];
|
||||
}
|
||||
|
||||
[self addSetting:self.audioOnPcStack ofId:@"audioOnPcStack" withInfoTag:NO withDynamicLabel:NO to:audioSection];
|
||||
@@ -957,7 +954,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
otherSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Others"];
|
||||
otherSection.identifier = @"SettingsSectionOthers";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[otherSection setSectionWithIcon:[UIImage systemImageNamed:@"cube"] andSize:20.5];
|
||||
[otherSection setSectionWithIcon:[UIImage systemImageNamed:@"cube"] size:20.5 sizeConstraint:-17];
|
||||
}
|
||||
[self addSetting:self.statsOverlayStack ofId:@"statsOverlayStack" withInfoTag:NO withDynamicLabel:NO to:otherSection];
|
||||
[self addSetting:self.unlockDisplayOrientationStack ofId:@"unlockDisplayOrientationStack" withInfoTag:YES withDynamicLabel:NO to:otherSection];
|
||||
@@ -977,7 +974,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
experimentalSection.sectionTitle = [LocalizationHelper localizedStringForKey:@"Experimental"];
|
||||
experimentalSection.identifier = @"SettingsSectionExperimental";
|
||||
if (@available(iOS 13.0, *)) {
|
||||
[experimentalSection setSectionWithIcon:[UIImage imageNamed:@"flask"] andSize:20];
|
||||
[experimentalSection setSectionWithIcon:[UIImage imageNamed:@"flask"] size:20 sizeConstraint:-19];
|
||||
}
|
||||
|
||||
[self addSetting:self.touchModeStack2 ofId:@"touchModeStack2" withInfoTag:NO withDynamicLabel:NO to:experimentalSection];
|
||||
@@ -3388,8 +3385,9 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
for (UIView *subview in view.subviews) {
|
||||
if ([subview isKindOfClass:[MenuSectionView class]]) {
|
||||
MenuSectionView *section = (MenuSectionView *)subview;
|
||||
section.titleLabel.textColor = [ThemeManager sectionLabelTextColor];
|
||||
section.iconImageView.tintColor = [UIColor clearColor];
|
||||
section.iconImageView.tintColor = [ThemeManager textColor];
|
||||
section.iconImageView.tintColor = [ThemeManager sectionLabelTextColor];
|
||||
section.separatorLine.backgroundColor = [UIColor clearColor];
|
||||
section.separatorLine.backgroundColor = [ThemeManager separatorColor];
|
||||
}
|
||||
@@ -3399,7 +3397,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
|
||||
- (void)updateTheme{
|
||||
self.view.backgroundColor = [UIColor clearColor];
|
||||
self.view.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
self.view.backgroundColor = [ThemeManager menuBackgroundColor];
|
||||
[self updateThemeForMenuSections:self.view];
|
||||
[self updateThemeForLabels:self.view];
|
||||
[self updateThemeForSelectors:self.view];
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#import "LocalizationHelper.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
#import "OSCProfilesManager.h"
|
||||
#import "ThemeManager.h"
|
||||
#import "VoidLink-Swift.h"
|
||||
#import "NativeTouchPointer.h"
|
||||
|
||||
#include <sys/socket.h>
|
||||
@@ -585,7 +585,7 @@
|
||||
}
|
||||
|
||||
- (void)updateTheme {
|
||||
self.view.backgroundColor = [ThemeManager appBackgroundColor];
|
||||
self.view.backgroundColor = [ThemeManager menuBackgroundColor];
|
||||
_stageLabel.textColor = [[ThemeManager textColor] colorWithAlphaComponent:0.9];
|
||||
_spinner.color = [ThemeManager textColor];
|
||||
}
|
||||
|
||||
@@ -9,5 +9,4 @@
|
||||
#import "OSCProfilesManager.h"
|
||||
#import "opus.h"
|
||||
#import "opus_defines.h"
|
||||
#import "ThemeManager.h"
|
||||
// #import "RelativeTouchHandler.h"
|
||||
Reference in new issue
Block a user