如何在 iphone/ipod 状态栏中添加图标?

Posted

技术标签:

【中文标题】如何在 iphone/ipod 状态栏中添加图标?【英文标题】:How to add an icon into iphone/ipod status bar? 【发布时间】:2011-09-10 17:12:52 【问题描述】:

Apple 不允许开发者在状态栏中添加图标吗?

我遵循了书中的代码。代码很简单:

@interface UIApplication (extended) 
- (void) addStatusBarImageNamed:(NSString *)aName; 
- (void) removeStatusBarImageNamed:(NSString *)aName; 

@end 

- (void)performAction
    if (xxx) 
        [[UIApplication sharedApplication]addStatusBarImageNamed:@"Default_EN.png"];
    
    else 
        [[UIApplication sharedApplication]addStatusBarImageNamed:@"Default_EC.png"];

    

但它给出了以下反馈:

-addStatusBarImageNamed: 已弃用。什么都不做。

我能做什么?

【问题讨论】:

新的 sdk 版本对此有何更新? 【参考方案1】:

据我所知,SDK 中不允许这样做,但他们可能有一些私有 API 来执行此操作,但到目前为止他们还没有公开这些,我认为您无法在状态栏中添加图标。 如果有人知道请纠正我。

【讨论】:

正确,这是私有 API。甚至不推荐使用的 API,这将直接导致 App Store 被拒绝。 +1 - 也请参考***.com/questions/1391059/…。 感谢@Nick Weaver @WebberLai:还请阅读@Nick Weaver 提供的SO 链接。【参考方案2】:

Classes/YourViewController.m 中,addStatusBarImageNamed:removeOnExit: 方法需要被覆盖。

- (void) addStatusBarImageNamed:(NSString*)image removeOnExit: (BOOL) remove 
if(_statusbarimage!=nil && _responds) 
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"statusBarEnabled"] integerValue] == 1)
[self removeStatusBarImageNamed:_statusbarimage];
statusbarimage=image;

if (_responds) 
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"statusBarEnabled"] integerValue] == 1)
[super addStatusBarImageNamed:image removeOnExit: remove];

  

看看它是否工作正常。

【讨论】:

以上是关于如何在 iphone/ipod 状态栏中添加图标?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone在状态栏中添加图标(la Battery Indicator)

iPhone / iPod Touch 图标图像错误(MininumOSVersion 低于 3.2),而项目适用于 iPad?

Blackberry - 如何在状态栏中使用通知图标

缺少推荐的图标文件。该捆绑包不包含 .png 格式的 iPhone / iPod Touch 应用程序图标,该图标恰好为“120x120”像素

Android:如何在状态栏中获取电池图标资源 ID 或完整文件路径/名称?

如何在状态栏中显示图标而不在通知抽屉中显示通知?