gpt4 book ai didi

ios - 如何将我的 CustomNavigationBar 分配给 UINavigationController?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:34 26 4
gpt4 key购买 nike

为了定制navigationBar的方面我的UINavigationController ,有人告诉我将 UINavigationBar 子类化类。

我需要更改栏的高度,放置图像而不是标题等。我无法仅使用 UINavigationBar 来完成属性。

现在,我的问题是,如何分配给 UINavigationController , 我的 CustomNavigationBar实例 ?我不能使用 UINavigationController.navigationBar因为它是只读的。

唯一的方法似乎是加载一个 xib,但是子类化 UINavigationController Apple 不推荐,所以我有点困惑。

最佳答案

根据您对导航栏的自定义程度,以下内容可能对您有所帮助:

1) 栏中的图像,替换标题文本。 (自己是一个 UIViewController)

UIImageView *titleImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
self.navigationItem.titleView = titleImg;
[titleImg release];

2) 完全自定义的导航栏

带有 Nib 的 subview UIView(更正:UINavigationController),使用(例如,iPhone 纵向) ImageView 作为背景(可以有渐变),然后在左侧和右侧使用自定义按钮,全部连接到您的相关响应程序功能。只要在每次将新 View 插入堆栈时将此导航栏 View 作为 subview 添加到每个 View Controller 等,您就会覆盖 Apple 的标准导航栏。 (记得在应用委托(delegate)中将他们的设置为隐藏)


编辑:

导航栏.h

@interface NavigationBar: UIViewController
{
IBOutlet UIImageView* navigationBarImgView; // remember to set these 4 IBOutlets as properties with (nonatomic, retain) and synthesize them.

IBOutlet UILabel* controllerHeader;

IBOutlet UIButton* rightButton;
IBOutlet UIButton* leftButton;

eController controller;

int screenWidth;
}

NavigationBar.m

-(id)initNavigationBar: (NSString*)name bundle:(NSBundle*)bundle: (eController)controllerName: (int)inScreenWidth
{
[super initWithNibName:name bundle:bundle];

controller = controllerName;
screenWidth = isScreenWidth;

return self;
}

你可以看到我的 init 在这里只传递了一些东西——一个在我的应用程序委托(delegate)中定义的枚举,它包含所有可能的 View Controller 的名称。我们在我的自定义导航栏类​​中解释此枚举并在所有可能的 Controller 之间切换,然后设置它们的按钮和标题以及使用该信息触发的操作。屏幕宽度很重要 - 虽然如果您在 IB 中创建栏可能不需要它,请设置它的大小以填充为两个方向分配的空间。

让我知道:)

关于ios - 如何将我的 CustomNavigationBar 分配给 UINavigationController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398869/

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