gpt4 book ai didi

iphone - 自定义 uinavigationbar 异常

转载 作者:行者123 更新时间:2023-12-03 21:09:05 24 4
gpt4 key购买 nike

我用这种方式制作了一个自定义导航栏:

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed: @"navigation_background.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

现在我想添加异常,以在将特定 View Controller 加载到导航 Controller 时显示正常的导航栏。

如何编码该异常?

最佳答案

我认为 UINavigationBar 上的类别不可能实现这一点。我建议使用一个子类,例如 CustomNavigationBar

.h

#import <UIKit/UIKit.h>

@interface CustomNavigationBar : UINavigationBar {
}
@end

.m

#import "CustomNavigationBar.h"

@implementation CustomNavigationBar

- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed: @"navigation_background.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

棘手的是,您永远不会自己创建 UINavigationBar,它都是由 UIKit 处理的。要仅更改某些栏的外观,您必须在运行时手动更改它们的类。

导入

#import <objc/runtime.h>

并在您的 View Controller 中(例如在 viewDidLoad 中),添加

object_setClass(self.navigationController.navigationBar, [CustomNavigationBar class]);

关于iphone - 自定义 uinavigationbar 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4593816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com