ios 项目中设置左侧徽标

//

// CategoryViewController.m

// scxhgh

//

// Created by xmkjsoft on 2024/7/16.

//

#import "CategoryViewController.h"

#import "SideMenuViewController.h" // 引入侧边栏控制器的头文件

#import "NavigationBarUtils.h"

@interface CategoryViewController ()

@property (nonatomic , strong) SideMenuViewController *sideMenuViewController;

@property (nonatomic , assign ) BOOL isSideMenuVisible;

@end

@implementation CategoryViewController

  • (void)viewDidLoad {

**super** viewDidLoad\]; // Do any additional setup after loading the view. \[**self** setupNavigationBarStyle\]; **self**.title=@"商品分类"; \[NavigationBarUtils setupNavigationBarStyleForViewController:**self**\]; // 设置导航栏带徽章的按钮 \[NavigationBarUtils setupNavigationBarWithBadgeForViewController:**self** withText:@"99+" selector:**@selector**(leftButtonTapped:)\]; // 初始化侧边菜单控制器 **self**.sideMenuViewController = \[\[SideMenuViewController alloc\] init\]; } - (**void**)leftButtonTapped:(UIButton \*)sender { NSLog(@"Left Button Tapped!"); // 这里可以添加逻辑,例如打开一个视图控制器或执行其他操作 \[**self** toggleSideMenu\]; } - (**void**)toggleSideMenu { **if** (**self**.isSideMenuVisible) { NSLog(@"关"); \[**self** hideSideMenu\]; } **else** { NSLog(@"开"); \[**self** showSideMenu\]; } } - (**void**)showSideMenu { CGFloat sideMenuWidth = 300; // 获取主窗口,兼容 iOS 12 及以下版本 UIWindow \*window; **if** (**@available**(iOS 13.0, \*)) { window = UIApplication.sharedApplication.windows.firstObject; } **else** { window = UIApplication.sharedApplication.keyWindow; } CGRect sideMenuFrame = CGRectMake(0, 0, sideMenuWidth, CGRectGetHeight(window.bounds)); **self**.sideMenuViewController.view.frame = sideMenuFrame; UIView \*maskView = \[\[UIView alloc\] initWithFrame:window.bounds\]; maskView.backgroundColor = \[UIColor colorWithWhite:0 alpha:0.5\]; \[window addSubview:maskView\]; \[window addSubview:**self**.sideMenuViewController.view\]; \[UIView animateWithDuration:0.8 animations:\^{ CGRect newFrame = CGRectMake(0, 0, sideMenuWidth, CGRectGetHeight(window.bounds)); **self**.sideMenuViewController.view.frame = newFrame; } completion:**nil**\]; UITapGestureRecognizer \*tapGesture = \[\[UITapGestureRecognizer alloc\] initWithTarget:**self** action:**@selector**(hideSideMenu)\]; \[maskView addGestureRecognizer:tapGesture\]; **self** .isSideMenuVisible = **YES**; } - (**void**)hideSideMenu { // 获取主窗口,兼容 iOS 12 及以下版本 UIWindow \*window; **if** (**@available**(iOS 13.0, \*)) { window = UIApplication.sharedApplication.windows.firstObject; } **else** { window = UIApplication.sharedApplication.keyWindow; } CGFloat sideMenuWidth = CGRectGetWidth(**self**.sideMenuViewController.view.frame); \[UIView animateWithDuration:0.3 animations:\^{ CGRect newFrame = CGRectMake(-sideMenuWidth, 0, sideMenuWidth, CGRectGetHeight(window.bounds)); **self**.sideMenuViewController.view.frame = newFrame; } completion:\^(**BOOL** finished) { \[**self**.sideMenuViewController.view removeFromSuperview\]; **for** (UIView \*subview **in** window.subviews) { **if** (\[subview isKindOfClass:\[UIView class\]\] \&\& subview.backgroundColor \&\& CGColorEqualToColor(subview.backgroundColor.CGColor, \[UIColor colorWithWhite:0 alpha:0.5\].CGColor)) { \[subview removeFromSuperview\]; **break**; } } }\]; **self** .isSideMenuVisible = **NO**; } - (**void**)setupNavigationBarStyle { // 设置导航栏背景色和文字颜色 **if** (**@available**(iOS 15.0, \*)) { // 创建导航栏外观对象 UINavigationBarAppearance \*navigationBarAppearance = \[\[UINavigationBarAppearance alloc\] init\]; // 设置导航栏背景色 \[navigationBarAppearance configureWithOpaqueBackground\]; navigationBarAppearance.backgroundColor = \[UIColor colorWithRed:(255/255.0) green:(111/255.0) blue:(97/255.0) alpha:1.0\]; // 设置标题文字颜色 navigationBarAppearance.titleTextAttributes = @{NSForegroundColorAttributeName : \[UIColor whiteColor\]}; // 应用到导航栏 **self**.navigationController.navigationBar.standardAppearance = navigationBarAppearance; **self**.navigationController.navigationBar.scrollEdgeAppearance = navigationBarAppearance; } **else** { // iOS 14及以下版本的处理逻辑 **self**.navigationController.navigationBar.barTintColor = \[UIColor colorWithRed:(255/255.0) green:(111/255.0) blue:(97/255.0) alpha:1.0\]; **self**.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : \[UIColor whiteColor\]}; } } /\* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue \*)segue sender:(id)sender { // Get the new view controller using \[segue destinationViewController\]. // Pass the selected object to the new view controller. } \*/ **@end**

相关推荐
超级小忍1 天前
从零开始:JDK 在 Windows、macOS 和 Linux 上的下载、安装与环境变量配置
java·windows·macos
三劫散仙1 天前
mac m1上使用Kerberos访问远程linux hadoop集群的正确姿势
linux·hadoop·macos
@蓝眼睛1 天前
mac的m3芯片安装JDK8、JDK17
macos·jdk
彬彬醤1 天前
Mac怎么连接VPS?可以参考这几种方法
大数据·运维·服务器·数据库·线性代数·macos·矩阵
吴Wu涛涛涛涛涛Tao1 天前
基于TCA构建Instagram克隆:SwiftUI状态管理的艺术
ios·swiftui
ka2x2 天前
Mac 电脑 IDEA 执行 Maven 出现 No route to host 问题
macos·maven·intellij-idea
易我数据恢复大师2 天前
如何在mac玩windows游戏?3个工具推荐,不用换电脑!
macos·mac·mac运行windows游戏·easeus os2go·mac玩windows游戏
@蓝眼睛2 天前
mac的m3芯片通过Homebrew安装git
git·macos
网络研究院2 天前
新的 SHAMOS MacOS 窃取程序利用单行终端命令攻击用户
macos·攻击·漏洞·用户
@蓝眼睛2 天前
mac的m3芯片安装mysql
mysql·macos