0

我已经开发应用程序几个小时了。

我正在从模板制作一个主视图详细信息应用程序。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 中添加导航栏样式时一样,它不会影响它的外观。所以无论我制作什么外观协议,它们都不会影响我的自定义类 xibs 外观......

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

然后我花了 3 个多小时在这个 .xib 文件中寻找某种方式来设置文本的样式!我在 AppDelegate 中放的任何东西都没有触及它!

因此,在向您彻底解释了自己。我的问题是:

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

无论您是否知道我可以编写的自定义类,然后我可以将其应用于对象,就像我为此做导航栏一样,或者有一些方法可以添加这个 .xibs UI 元素以根据我在 AppDelegate 中声明的内容进行风格化. 请给我提意见。我已经完成了我的家庭作业。

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

4

1 回答 1

0

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

有关更多信息,请参阅此 SO 问题: 如何更改 UIBarButtonItem 的字体?

于 2012-12-26T02:29:45.280 回答