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

相关推荐
1024小神3 小时前
关于在ios系统中签名并安装ipa文件的五种方法,PakePlus打包的ipa文件可以看看
macos·ios·cocoa
漂亮_大男孩4 小时前
conda|如何通过命令行在mac上下载conda
macos·conda
止观止7 小时前
VS Code 二次开发:跨平台图标定制全攻略
linux·windows·vscode·macos
QWQ___qwq7 小时前
SwiftUI 的状态管理包装器(Property Wrapper)
ios·swiftui·swift
小瓶盖_tl9 小时前
在Mac上安装CocoaPods问题处理
macos·xcode·cocoapods
游戏开发爱好者810 小时前
苹果iOS26系统升级:液态玻璃与智能功能全解析
macos·ios·小程序·uni-app·objective-c·cocoa·iphone
Aftery的博客11 小时前
flutter项目打包macOS桌面程序dmg
flutter·macos
心灵宝贝11 小时前
4K Wallpaper mac v2.7.dmg 安装教程(Mac电脑详细安装步骤4K壁纸Mac下载安装)
macos
心随雨下12 小时前
Flutter中新手需要掌握的几种Widget
android·flutter·ios
2501_9159184117 小时前
iOS 26 App 性能测试|性能评测|iOS 26 性能对比:实战策略
android·macos·ios·小程序·uni-app·cocoa·iphone