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 小时前
【vue3+tauri+rust】如何实现下载文件mac+windows
windows·macos·rust
恋猫de小郭8 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
点金石游戏出海14 小时前
每周资讯 | Krafton斥资750亿日元收购日本动画公司ADK;《崩坏:星穹铁道》新版本首日登顶iOS畅销榜
游戏·ios·业界资讯·apple·崩坏星穹铁道
旷世奇才李先生15 小时前
Swift 安装使用教程
开发语言·ios·swift
90后的晨仔16 小时前
Xcode16报错: SDK does not contain 'libarclite' at the path '/Applicati
ios
finger2448016 小时前
谈一谈iOS线程管理
ios·objective-c
Digitally17 小时前
如何将大型视频文件从 iPhone 传输到 PC
ios·iphone
梅名智17 小时前
IOS 蓝牙连接
macos·ios·cocoa
美狐美颜sdk1 天前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
恋猫de小郭1 天前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin