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

你可能感兴趣的:(ios,cocoa,macos)