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**

相关推荐
开心就好202518 分钟前
免 Xcode 的 iOS 开发新选择?聊聊一款更轻量的 iOS 开发 IDE kxapp 快蝎
后端·ios
恋猫de小郭3 小时前
Apple 的 ANE 被挖掘,AI 硬件公开,宣传的 38 TOPS 居然是"数字游戏"?
前端·人工智能·ios
忆江南21 小时前
iOS 深度解析
flutter·ios
没有故事的Zhang同学1 天前
05-主题|事件响应者链@iOS-应用场景与进阶实践
ios
FeliksLv1 天前
尝试给Lookin 支持 MCP
ios
没有故事的Zhang同学1 天前
01-研究系统框架@Web@iOS | JavaScriptCore 框架:从使用到原理解析
ios
pe7er3 天前
macOS 应用无法打开(权限问题)解决方案
macos·mac
CocoaKier3 天前
苹果谷歌商店:如何监控并维护用户评分评论
ios·google·apple
iOS日常3 天前
iOS设备崩溃日志获取与查看
ios·xcode
wangruofeng3 天前
AI 助力 Flutter 3.27 升级到 3.38 完整指南:两周踩坑与实战复盘
flutter·ios·ai编程