BPBarButtonItem 是一个用于动态创建看起来很棒的自定义 UIBarButtonItems 的工具。BPBarButtonItem 并不是一个 UIBarButtonItem
的子类,而是一个 NSObject
,它可以创建皮肤化的普通 UIBarButtonItem
以供您按需使用。BPBarButtonItem 还可以用于皮肤已创建的 UIBarButtonItem
,如 nib 或 Storyboard 中,这些按钮支持两种方向样式,并自动正确显示为返回按钮。
BPBarButtonItem/
文件夹拖到您的项目中(确保您复制了所有文件/文件夹)#import "BPBarButtonItem.h"
使用 BPBarButtonItem 有 3 种主要方法
这将允许您动态创建全新的 UIBarButtonItem
。您可以使用预定义的任何样式或设置自己的蒙版颜色。
self.navigationItem.rightBarButtonItem = [BPBarButtonItem barButtonItemWithStyle:BPBarButtonItemStyleAction title:@"Action" target:self action:@selector(buttonAction:)];
self.navigationItem.rightBarButtonItem = [BPBarButtonItem barButtonItemWithTintColor:[UIColor redColor] title:@"Red" target:self action:@selector(buttonAction:)];
这将皮肤任何现有的 UIBarButtonItem
。标题、操作和其他属性不会被修改。这可以通过 IBOutlet
或者直接访问 navigationItem
's 的右和左按钮属性来完成。
[BPBarButtonItem customizeBarButtonItem:self.navigationItem.rightBarButtonItem withStyle:BPBarButtonItemStyleStandardDark];
[BPBarButtonItem customizeBarButtonItem:self.navigationItem.rightBarButtonItem withTintColor:[UIColor colorWithRed:0.048 green:0.169 blue:0.458 alpha:1.000]];
想要皮肤应用中所有按钮的外观,但不想分别设置每个按钮?设置默认按钮样式几乎与皮肤现有按钮相同,只是您需要将按钮项传递为 nil
。您通常会希望在您的 application:didFinishLaunchingWithOptions:
方法中完成此操作。
[BPBarButtonItem customizeBarButtonItem:nil withStyle:BPBarButtonItemStyleStandardDark];
注意,在使用外观代理方法的情况下,您仍然可以使用上述现有按钮皮肤方法覆盖单个按钮。
您还可以更复杂,传递特定的外观代理。例如,这可以用于皮肤 UINavigationBar
中的按钮,但不皮肤 UIToolbar
中的按钮。
[BPBarButtonItem customizeBarButtonItem:[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] withStyle:BPBarButtonItemStyleStandardLight];
您可以直接使用外观代理来修改UISegmentedControl
的样式。语法类似于上面的UIBarButtonItems。
[BPBarButtonItem customizeSegmentedControl:mySegmentedControl withStyle:BPBarButtonItemStyleStandardDark];
[BPBarButtonItem customizeSegmentedControl:nil withStyle:BPBarButtonItemStyleStandardDark];
BPBarButtonItem创建的是标准的UIBarButtonItem
,因此它们具有相同的限制。您不能在导航栏或工具栏之外使用它们。如果您正在寻找一个优雅的UIButton
替代品,请检查BButton。
版权所有(c)2013 Cory Imdieke
在此特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人,无限制地处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人从事此类行为,但受以下条件约束
上述版权声明和本许可声明应包含在软件的全部或实质部分副本中。
该软件按“原样”提供,不提供任何形式的保证,无论是明示的、默示的,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是在合同、侵权或其他行为中产生的,无论是源于、出于或与该软件有关,还是使用或以其他方式处理该软件。
归因很好,但不是必需的。
https://twitter.com/CoryImdieke
感谢Brian Gilham在设计细节上的帮助。
https://twitter.com/bgilham