iphone - 用 UIView 替换 UINavigationControllers NavigationBar

标签 iphone objective-c ios uinavigationcontroller customization

我正在开发具有多个皮肤的应用程序,但我对如何实现它感到进退两难。

解决方案之一是为每个皮肤创建单独的 nib 文件,并根据当前选择的皮肤加载它。问题是我不能编辑导航 Controller 的导航栏(我的应用程序使用),我必须更改它的背景图像和后退按钮图像等。我想出了一个想法来隐藏这个导航栏屏幕并将其替换为 Interface Builder 中的自定义 UIView,它将充当导航栏和自定义后退按钮,IBAction 用于弹出当前 View Controller,因此用户不会看到任何差异。

这种方法是否可以接受?如果我这样做,我会遇到被 App Store 拒绝的问题吗?

最佳答案

如果您选择隐藏 UINavigationBar 并将其替换为您自己的 UIView,就 Apple 而言,这没有问题。

但是,我可以告诉你,你将不得不花一些时间来尝试复制 UINavigationBar 自然产生的一些视觉效果。

例如,当您按下/弹出一个新 Controller 时,您会看到导航栏标题会漂亮地滑动和淡入淡出。这同样适用于左右栏项目。

我个人不会完全隐藏 UINavigationBar,而是自定义它。最后这一切都取决于你想要什么,但默认情况下 UINavigationBar 是非常可定制的。

您可以添加自己的按钮甚至整个 UIView 作为左右栏项目。此外,您可以添加自己的 UIView 作为标题(使用您自己的标签、自定义字体或其他)或更改背景。

编辑:

要轻松自定义整个应用程序的外观,您可以子类化 UINavigationController 并创建您自己的 CustomUINavigationController。然后,在 viewDidLoad 方法中,您可以更改导航栏的任何内容,这将在整个应用程序中访问。

关于iphone - 用 UIView 替换 UINavigationControllers NavigationBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8005781/

相关文章:

Objective-C,如何将 char[] 传递给方法?

iphone - 如何根据indexPath获取单元格文本?

iphone - 应用程序崩溃 [UIWebView webView :didReceiveTitle:forFrame:]

ios - 如何将 JSON 加载到 NSArray

ios - 尝试在 UICollectionViewCell 类上使用照片库

ios - 模糊效果 - 背景 UITextField

支持点击对焦的 iOS 设备

iphone - 关于制作网站的移动版本

iPhone 应用程序按钮可前往 App Store 并发表评论

ios - 什么是便利构造函数。我需要保留便利构造函数返回的对象吗