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

相关推荐
小天源2 小时前
智叟云集系统:便携部署、MAC 授权与交付排障
macos
Joy T7 小时前
voice-dump-to-todo:把混乱的语音整理成可执行待办,一个实用的 Agent Skill
ide·macos·语音识别·xcode·任务管理·自研skill
aiopencode10 小时前
局域网设备抓包怎么做?用 TraceEagle 抓电视、游戏机和 IoT 流量
后端·ios
奇牙coding12 小时前
GPT-5.5 报 401 invalid_api_key 怎么办?换密钥前按 4 层排查请求头、项目权限和端点
数据库·gpt·ios·ai
szp200513 小时前
中文字幕烧进视频后整片空白:CoreText 低报行高,导出照样成功
ios·swift
二流小码农13 小时前
HarmonyOS开发助手,0代码让元服务从开发到上架
android·ios·harmonyos
JPower_mr.g14 小时前
SmartCall v1.0.9 发布:智能体知识库上线,让 AI 客服先查资料再回答
java·ide·人工智能·macos·架构·开源·xcode
轻口味16 小时前
启元无真机二开实战:先在Mac上养一台Q1——官方URDF到MuJoCo数字孪生的完整链
macos·具身智能·mujoco·启元机器人
zhongben123_17 小时前
从0到1开发一款生鲜配送APP:核心技术难点与架构避坑指南
大数据·运维·人工智能·ios·架构·web app
zhongben_keji18 小时前
批发商城APP怎么做:价格引擎、授信台账与资金合规的设计要点
ios·小程序·web app