自定义.xib中保存的UIBarButton的文本样式

时间:2012-12-26 01:21:03

标签: ios uikit interface-builder uibarbuttonitem

我一直在开发应用程序几个小时。

我正在从模板制作一个主视图详细信息应用程序。 AppDelegate.m didFinishLaunchingWithOptions允许我添加一些自定义GUI代码来改变导航栏之类的东西。所以我继续为主导航栏的背景添加自定义背景,就像这样......

//custom navbar
UIImage *navigationBarBackground = [UIImage imageNamed:@"NavigationBarBackground.png"];
[[UINavigationBar appearance] setBackgroundImage:navigationBarBackground forBarMetrics:UIBarMetricsDefault];

真棒!现在我的导航栏有自定义bgs!

现在在主视图区域,我在视图的右上角有一个+按钮,当你点击它时,打开一个窗口覆盖其余的内容,但不是一个全屏,只是一个地方到输入一些信息,如表格。我用.xib创建了一个新类。我从IB设计了新窗口。

但是当弹出新窗口时,导航栏不是我的自定义图像,它是默认的...

所以我花了好几个小时试图找到改变它的方法。最后,我想到了为UIToolbar添加一个自定义类,通过创建一个新类来生成应用的任何navBar,将某个图像加载到其背景中。大!我的.m文件看起来像这样:

#import "customToolbar.h" //for your information the .h for this is a blank { }

@implementation customToolbar


- (void)drawRect:(CGRect)rect
{
    CGContextRef c = UIGraphicsGetCurrentContext();
    UIImage *image = [UIImage imageNamed:@"addBusKid-NavBar.png"];
    CGContextDrawImage(c, rect, image.CGImage);
}

@end

太棒了,通过这个课程,我可以将任何bg图像应用到界面构建器中的导航栏。

...

现在,我的导航栏看起来都很好看,我觉得是时候改变一些文字了!所以,我开始回到我的AppDelegate.m

我添加了一些代码来更改所有导航栏文本的默认文本样式...

// Customize the title text for *all* UINavigationBars
[[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
  UITextAttributeTextColor,
  [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],
  UITextAttributeTextShadowColor,
  [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
  UITextAttributeTextShadowOffset,
  [UIFont fontWithName:@"Arial-Bold" size:0.0],
  UITextAttributeFont,
  nil]];

太好了,这改变了我的导航栏文本样式......但等等,当我打开我用.xib制作的弹出窗口时,就像我在AppDelegate中添加了navigationBar样式一样,它并没有影响它的外观。所以无论我制作什么外观协议,它们都不会影响我的自定义类xibs外观...

好吧,我尝试制作一个自定义类,就像我为导航栏做的那样,我可以申请给它一些风格。但我无法做到这一点(如果你知道请告诉我)......

然后我花了3个多小时搜索这个.xib文件中的文本样式!我放在AppDelegate中的任何东西都没有触及它!

所以,彻底向你解释了自己。我的问题是:

如何设置在界面构建器中创建的UIBarButton文本的样式。

你是否知道我可以编写的自定义类,然后我可以应用于对象,因为我为此做了导航栏,或者有一些方法可以根据我的方式添加这个.xibs UI元素进行风格化在AppDelegate中声明。请建议我。我做完了我的作业。

顺便说一句,这是我的第一篇文章!我已经有宾至如归的感觉!感谢您的支持,我希望我也可以帮助其他人。

1 个答案:

答案 0 :(得分:0)

只需在.xib(视图控制器)类中创建一个@property,它将UIBarButtonItem声明为IBOutlet。将此(通过IB)链接到.xib按钮表示,然后设置UIBarItem(父类)textAttributes方法的样式。

有关详细信息,请参阅此SO问题: How can i change Font of UIBarButtonItem?