我是Xamarin iOS Designer的新手,我正在尝试设置状态栏和导航控制器背景颜色,如下例所示:https://www.youtube.com/watch?v=DApI7aWGNiY
我已经在Xcode Interface Builder中打开了我的主要故事板,并按照教程中的步骤向appDelegate.m添加了代码。代码如下:
#import "AppDelegate.h"
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];
return YES;
}
@end
上面似乎没有用 - 当我在Xamarin中保存和构建时,状态和导航栏仍然是灰色的。
我想知道为什么以及它是否与项目是在Xamarin而不是Xcode中创建的事实有关。我的.m文件位于"支持文件"文件夹与演示不同,它不包含任何自动生成的代码。在Xcode Interface Builder上似乎有更好的文档,这就是我使用它而不是新的Xamarin iOS Designer的原因。
Xamarin Studio 5.1.3和Xcode 5.1.1 有小费吗?谢谢!
**更新:通过添加可以在状态和导航栏上实现背景颜色更改
this.NavigationController.NavigationBar.BarTintColor = UIColor.Yellow;
在base.ViewDidLoad ();
之后立即访问我的viewcontroller.cs。仍然想知道为什么代码添加到Xcode项目.m文件不会在Xamarin构建中呈现。
答案 0 :(得分:14)
如果您想在整个iOS应用中更改导航栏颜色,请将其添加到AppDelegate FinishedLaunching方法中:
UINavigationBar.Appearance.BarTintColor = UIColor.YourColor;
您还可以通过执行以下操作来编辑导航栏的文本属性:
UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes { TextColor = UIColor.White });
对于状态栏,如果要将状态栏图标更改为白色而不是默认黑色,例如,为导航控制器创建一个类并覆盖UIStatusBarStyle
public override UIStatusBarStyle PreferredStatusBarStyle ()
{
return UIStatusBarStyle.LightContent;
}
这适用于您的NavigationController及其任何子控制器。
答案 1 :(得分:7)
我终于在Xamarin Forms中使用了这篇文章,所以请参阅http://morganskinner.blogspot.co.uk/2015/01/xamarin-forms-light-status-bar-for-ios.html以获取完整的详细信息。我还有一个关于为导航栏设置背景图像的后续帖子,并让它也适用于Landscape - 请参阅http://morganskinner.blogspot.co.uk/2015/01/xamarin-formsusing-background-images-on.html。希望这有助于其他人!
答案 2 :(得分:0)
以下行代码可能对您有所帮助。
public override void ViewDidAppear(bool animated){
NavigationController.NavigationBar.BackgroundColor = UIColor.Yellow;
}
答案 3 :(得分:-2)
if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@""] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTitleTextAttributes:
@{
UITextAttributeTextColor: [UIColor whiteColor],UITextAttributeTextShadowColor: [UIColor clearColor],UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],UITextAttributeFont: [UIFont fontWithName:@"ArialMT" size:18.0f]
}];
CGFloat verticalOffset = 0;
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];
}
else
{
[[UINavigationBar appearance] setBarTintColor:[UIColor whiteColor]];
// Uncomment to change the color of back button
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
// Uncomment to assign a custom backgroung image
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@""] forBarMetrics:UIBarMetricsDefault];
// Uncomment to change the back indicator image
[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@""]];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@""]];
// Uncomment to change the font style of the title
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,shadow, NSShadowAttributeName,[UIFont fontWithName:@"ArialMT" size:18.0], NSFontAttributeName, nil]];
CGFloat verticalOffset = 0;
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];
}