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

相关推荐
SoraLuna8 小时前
「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
macos·ui·harmonyos
追风林8 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
yqcoder8 小时前
mac 安装 nodemon
macos
一ge科研小菜鸡8 小时前
macOS开发环境配置与应用开发(详细讲解)
macos
hairenjing11238 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
2401_8658548811 小时前
iOS应用想要下载到手机上只能苹果签名吗?
后端·ios·iphone
zorchp15 小时前
在 MacOS 上跑 kaldi
macos·kaldi
德育处主任15 小时前
Mac和安卓手机互传文件(ADB)
android·macos
土小帽软件测试16 小时前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习
小沈同学呀18 小时前
Mac M1 Docker创建Rocketmq集群并接入Springboot项目
macos·docker·java-rocketmq·springboot