如何更改UINavigationBar灯

时间:2013-05-08 09:46:36

标签: ios objective-c cocoa-touch uinavigationbar

我对iOS开发很陌生,这是我第一次在这里设计样式。

在任何人说出任何事之前,我知道以下代码会改变颜色

self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.169 green:0.373 blue:0.192 alpha:0.9];

我想做的是想改变导航栏中的灯光。目前是默认的从上到下的渐变。但我想要做的就是改变它,使它像图片一样发光,仅在中间。

我不知道我是不是更好地使用图片或用xcode绘制光线是最好的选择。主要是由于记忆消耗和有效性。我的猜测是,绘制灯光是最佳选择,我只需知道如何操作。

我尝试搜索这个,但可能是我缺乏iOS开发知识阻止我找到关于如何执行此操作的正确教程或代码示例。

任何帮助都表示赞赏。

enter image description here

这是光分布与默认UINavBar不同的另一个示例。我真的很想知道他们是用过图片还是用xCode画了

enter image description here

6 个答案:

答案 0 :(得分:0)

最好为条形图使用自定义图像,而不是“画出”光晕。

答案 1 :(得分:0)

你可以使用自定义图片,试试这个:

[[UINavigationBar appearance] setBackgroundImage:yourImage forBarMetrics:UIBarMetricsDefault]

在您的app delegate中添加此代码,它可用作全局设置,所有导航栏都将设置

答案 2 :(得分:0)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{     
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.imgBackgroundView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 [self.window addSubview:self.imgBackgroundView];
    [self addCustomNavigationController];
[self addCustomNavigationController];
}

- (void)addCustomNavigationController
{
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
    {
        [[UINavigationBar appearance] setBackgroundImage:[self getImageFromResource:@"topbar"] forBarMetrics:UIBarMetricsDefault];
        [[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, 0)],
          UITextAttributeTextShadowOffset,
          [UIFont fontWithName:@"HelveticaNeue-Bold" size:18.0],
          UITextAttributeFont,
          nil]];
    }
    [[NSUserDefaults standardUserDefaults] setObject:@"Login" forKey:@"randomView"];
}

- (UIImage*)getImageFromResource:(NSString*)imageName
{
    return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];
}

答案 3 :(得分:0)

Hello请使用iOS5和iOS6的外观 [[UIBarButtonItem外观] setTintColor:[UIColor colorWithRed:0.08绿色:0.72蓝色:0.78 alpha:1]];

答案 4 :(得分:0)

一个替代解决方案可以是在NavigationBar上添加UIButton。

从属性检查器或使用

设置其高亮显示属性
[buttonGlow setShowsTouchWhenHighlighted:YES];

viewDidLoad

[buttonGlow setHighlighted:YES];

答案 5 :(得分:0)

我需要的是PaintCode,因为使用代码的最佳方式是绘制和使用代码,这种代码与普通图像一样具有内存效率,但考虑到在代码中,它允许对图像进行高度自定义。有关绘制图像中的内存的帖子,请参阅here