UINavigationController 的自定义 UIBarButtonItem/UISegmentedControl

Posted

技术标签:

【中文标题】UINavigationController 的自定义 UIBarButtonItem/UISegmentedControl【英文标题】:Custom UIBarButtonItem/UISegmentedControl for UINavigationController 【发布时间】:2013-05-29 21:25:12 【问题描述】:

目前我想让我的 UINavigationController 的外观和感觉像 facebook 的主视图。

我正在考虑使用 UIsegmentedControl,它具有透明背景和输入到按钮视图中的图像。

另一个想法是创建自定义按钮,并将其背景图像作为图像。

如果有人对如何完成此操作或我可以参考的示例项目有任何想法,请参考我!!!哈哈。

谢谢***!!!

【问题讨论】:

【参考方案1】:

在这种情况下,我将只使用标准 UIBarButtonItems 来处理左右按钮。 然后中心将是一个自定义视图,里面有 3 个按钮。 UINavigationItem 有一个名为“titleView”的属性。

所以在一些适当的控制器中只是做某事。喜欢:

self.navigationItem.titleView = myCustomViewWithThreeButtonsAsSubviews;
self.navigationItem.rightBarButtonItem = myLeftUIBarButtonItem;
self.navigationItem.leftBarButtonItem = myRightUIBarButtonItem;

将 barButtontem 的样式设置为 UIBarButtonItemStylePlain 并提供图片即可轻松完成。

【讨论】:

但是点击按钮呢?我希望按钮变成不同的颜色,或者更确切地说,onbuttonpress 我希望用户看到按下按钮,就像 Facebook 应用程序一样。我觉得这个想法会在单击按钮时限制动画。当然我可以在按下按钮时发生某种类型的操作,但用户能否看到按钮图像从正常变为突出显示? 我想这是问这个问题的一种更简单的方法,“我是否仅限于在 buttonpress 上突出显示按钮?” 导航栏中的UIBarButtonItems不能有UIBarButtonItemStylePlain——它们总是有边框的。 所以我认为我需要创建一个完全自定义的导航栏? @Scott,你可以给titleView添加一个自定义按钮,它不一定是UIBarButtonItem,也不需要边框。仅当您将条形按钮项直接添加到导航栏时,您所说的才是正确的。

以上是关于UINavigationController 的自定义 UIBarButtonItem/UISegmentedControl的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式在 UINavigationController 中设置 UINavigationBar 的自定义子类

访问 UIViewController 中的自定义 UINavigationController 属性和方法

使用 UINavigationController 默认 UIToolbar 的自定义背景

带有按钮的自定义 UINavigationController

UINavigationController 的自定义动画推送未正确呈现导航栏

使用带有子类 UINavigationController 的自定义 iOS 7 过渡偶尔会导致黑屏