From 1269c46f56063b80113d5c357c8b25db2afd9c39 Mon Sep 17 00:00:00 2001 From: True Zhuanjia Date: Sat, 14 Mar 2026 11:50:07 +0800 Subject: [PATCH] UI improvements: widget profile selector table --- VoidLink/Base.lproj/iPad.storyboard | 50 ++++++++++----- VoidLink/Base.lproj/iPhone.storyboard | 23 ++++--- .../OSCProfilesTableViewController.m | 62 +++++++++---------- VoidLink/mul.lproj/iPad.xcstrings | 2 +- VoidLink/mul.lproj/iPhone.xcstrings | 12 ++-- 5 files changed, 85 insertions(+), 64 deletions(-) diff --git a/VoidLink/Base.lproj/iPad.storyboard b/VoidLink/Base.lproj/iPad.storyboard index 97b827ae..0e877a85 100644 --- a/VoidLink/Base.lproj/iPad.storyboard +++ b/VoidLink/Base.lproj/iPad.storyboard @@ -3157,33 +3157,40 @@ - + - - - - - - + + + + + + + + + + - + + + + @@ -3191,11 +3198,13 @@ + + @@ -3204,14 +3213,18 @@ + + + + - - + + - - + + @@ -3227,7 +3240,7 @@ - + @@ -3244,19 +3257,22 @@ - + - + - + + + + - + diff --git a/VoidLink/Base.lproj/iPhone.storyboard b/VoidLink/Base.lproj/iPhone.storyboard index 5da9b955..6b56c9cc 100644 --- a/VoidLink/Base.lproj/iPhone.storyboard +++ b/VoidLink/Base.lproj/iPhone.storyboard @@ -950,29 +950,33 @@ - + - + + - + + + + @@ -980,11 +984,13 @@ + + @@ -1002,12 +1008,13 @@ - + + @@ -3105,16 +3112,16 @@ - + - + - + - + diff --git a/VoidLink/ViewControllers/CustomOSCViewControl/OSCProfilesTableViewController.m b/VoidLink/ViewControllers/CustomOSCViewControl/OSCProfilesTableViewController.m index 4206468c..2d8d7b93 100644 --- a/VoidLink/ViewControllers/CustomOSCViewControl/OSCProfilesTableViewController.m +++ b/VoidLink/ViewControllers/CustomOSCViewControl/OSCProfilesTableViewController.m @@ -57,6 +57,7 @@ const double NAV_BAR_HEIGHT = 50; - (void) viewDidLayoutSubviews { + /* CGRect bounds = self.profileTableViewNavigationBar.bounds; CGSize cornerSize = CGSizeMake(15, 15); @@ -69,17 +70,29 @@ const double NAV_BAR_HEIGHT = 50; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = bounds; maskLayer.path = path.CGPath; + */ + + self.profileTableViewNavigationBar.layer.cornerRadius = 15; // 设置圆角半径 + self.profileTableViewNavigationBar.layer.maskedCorners = kCALayerMinXMinYCorner|kCALayerMaxXMinYCorner; + 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.profileTableViewNavigationBar.layer.mask = maskLayer; + + self.tableView.layer.cornerRadius = 15; + self.tableView.layer.maskedCorners = kCALayerMinXMaxYCorner|kCALayerMaxXMaxYCorner; + self.tableView.layer.masksToBounds = true; + + tableView.separatorStyle = (GenericUtils.isIPhone&&GenericUtils.liquidGlassEnabled) ? UITableViewCellSeparatorStyleSingleLine : UITableViewCellSeparatorStyleSingleLine; + tableView.separatorInset = UIEdgeInsetsMake(0, 15, 0, 15); + + if(GenericUtils.liquidGlassEnabled){ + tableView.separatorColor = [UIColor.whiteColor colorWithAlphaComponent:GenericUtils.isIPhone ? 0.28 : 0.165]; + } + else{ + tableView.separatorColor = [UIColor.whiteColor colorWithAlphaComponent:0.3]; } - self.tableView.layer.cornerRadius = 15; // 设置圆角半径 - self.tableView.layer.masksToBounds = true; // 使圆角生效 } - (void) viewDidLoad { @@ -89,16 +102,16 @@ const double NAV_BAR_HEIGHT = 50; profilesManager = [OSCProfilesManager sharedManager:_layoutViewBounds]; - self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, NAV_BAR_HEIGHT)]; + self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; self.tableView.delegate = self; self.tableView.dataSource = self; [self.tableView registerNib:[UINib nibWithNibName:@"ProfileTableViewCell" bundle:nil] forCellReuseIdentifier:@"Cell"]; // Register the custom cell nib file with the table view - self.tableView.alpha = 0.7; + self.tableView.alpha = 1; //self.tableView.backgroundColor = [[UIColor colorWithRed:0.5 green:0.7 blue:1.0 alpha:1.0] colorWithAlphaComponent:0.2]; // set background color & transparency - self.tableView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5]; // set background color & transparency + self.tableView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.43]; // set background color & transparency // self.tableView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2]; // set background color & transparency UITapGestureRecognizer *tap = @@ -108,7 +121,7 @@ const double NAV_BAR_HEIGHT = 50; tap.delegate = (id)self; [self.view addGestureRecognizer:tap]; - + if(GenericUtils.liquidGlassEnabled){ if (@available(iOS 26.0, *)) { for(UIBarButtonItem* button in self.profileTableViewNavigationItem.leftBarButtonItems){ @@ -129,7 +142,7 @@ const double NAV_BAR_HEIGHT = 50; [super viewDidAppear: animated]; - self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, NAV_BAR_HEIGHT)]; + self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; self.tableView.delegate = self; self.tableView.dataSource = self; @@ -346,11 +359,11 @@ didPickDocumentsAtURLs:(NSArray *)urls { cell.name.text = profile.name; cell.name.backgroundColor = [UIColor clearColor]; cell.name.alpha = 1.0; - cell.name.textColor = [UIColor whiteColor]; // Opaque white text - cell.name.font =[UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; + cell.name.textColor = [UIColor.whiteColor colorWithAlphaComponent:GenericUtils.isIPhone ? 0.9 : 0.9]; // Opaque white text + cell.name.font =[UIFont systemFontOfSize:GenericUtils.isIPhone ? 18.5 : 18.5 weight:UIFontWeightMedium]; cell.name.shadowColor = [UIColor blackColor]; // Black shadow // Set the shadow offset - cell.name.shadowOffset = CGSizeMake(1.0, 1.5); + cell.name.shadowOffset = CGSizeMake(0.5, 0.5); // Set cell and contentView background colors cell.backgroundColor = [UIColor clearColor]; @@ -364,21 +377,9 @@ didPickDocumentsAtURLs:(NSArray *)urls { } // Remove existing custom separators to avoid duplicates - UIView *existingSeparator = [cell.contentView viewWithTag:100]; - if (existingSeparator) { - [existingSeparator removeFromSuperview]; - } - // Add custom separator with increased height (thickness) - CGFloat separatorHeight = 1.0; // Adjust this value for thicker line - UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake(0, cell.contentView.frame.size.height - separatorHeight, cell.contentView.frame.size.width, separatorHeight)]; - - separatorView.backgroundColor = [UIColor whiteColor]; // Set your desired color - separatorView.tag = 100; // Assign a tag to identify the separator view - separatorView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; - - [cell.contentView addSubview:separatorView]; - [cell.contentView bringSubviewToFront:separatorView]; + // [cell.contentView addSubview:separatorView]; + // [cell.contentView bringSubviewToFront:separatorView]; // Replace the default checkmark with a UILabel displaying a checkmark character if (indexPath.row == [profilesManager getIndexOfSelectedProfile]) { @@ -392,9 +393,6 @@ didPickDocumentsAtURLs:(NSArray *)urls { } else { cell.accessoryView = nil; // Remove checkmark if not selected } - [cell.contentView bringSubviewToFront:separatorView]; - separatorView.layer.zPosition = 1; // Bring separator to the top layer - return cell; } diff --git a/VoidLink/mul.lproj/iPad.xcstrings b/VoidLink/mul.lproj/iPad.xcstrings index 5feba062..2c46ce61 100644 --- a/VoidLink/mul.lproj/iPad.xcstrings +++ b/VoidLink/mul.lproj/iPad.xcstrings @@ -4742,7 +4742,7 @@ }, "Q2V-XF-4jq.title" : { "comment" : "Class = \"UINavigationItem\"; title = \"Widget Profiles\"; ObjectID = \"Q2V-XF-4jq\";", - "extractionState" : "extracted_with_value", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { diff --git a/VoidLink/mul.lproj/iPhone.xcstrings b/VoidLink/mul.lproj/iPhone.xcstrings index 3dc37ff7..cb636f21 100644 --- a/VoidLink/mul.lproj/iPhone.xcstrings +++ b/VoidLink/mul.lproj/iPhone.xcstrings @@ -344,30 +344,30 @@ } }, "5pN-Sn-SCN.title" : { - "comment" : "Class = \"UINavigationItem\"; title = \"Controller & Widget Profiles\"; ObjectID = \"5pN-Sn-SCN\";", - "extractionState" : "extracted_with_value", + "comment" : "Class = \"UINavigationItem\"; title = \"Widget Profiles\"; ObjectID = \"5pN-Sn-SCN\";", + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { "state" : "new", - "value" : "Controller & Widget Profiles" + "value" : "Widget Profiles" } }, "zh-Hans" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "屏显控件布局" } }, "zh-Hant" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "螢幕小工具佈局" } }, "zh-HK" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "螢幕小工具佈局" } }