使用iOS5(Monotouch或ObjC)的NavigationBar上的阴影

时间:2011-11-17 16:33:59

标签: objective-c ios xamarin.ios ios5 shadow

我期待在iOS5的NavigationBar上添加阴影......现在,我正在使用

m_navigationController.NavigationBar.Layer.ShadowColor   =  UIColor.Black.CGColor;
m_navigationController.NavigationBar.Layer.ShadowOffset  =  new System.Drawing.SizeF( 1f, 1f );
m_navigationController.NavigationBar.Layer.ShadowRadius  =  3f;
m_navigationController.NavigationBar.Layer.ShadowOpacity =  1f;

这是C#但是,它也适用于Obj-C。但是,这种方法在iOS5中不再有效,有人知道如何使它工作吗?

2 个答案:

答案 0 :(得分:2)

尝试将代码更改为:

m_navigationController.navigationBar.layer.shadowColor   =  [[UIColor blackColor] CGColor];
m_navigationController.navigationBar.layer.shadowOffset  =  CGSizeMake( 1.0, 1.0 );
m_navigationController.navigationBar.layer.shadowRadius  =  3.0;
m_navigationController.navigationBar.layer.shadowOpacity =  1.0;

那是Objective-C代码。确保#import <QuartzCore/QuartzCore.h>位于文件顶部。

答案 1 :(得分:1)

代码不再有效的原因是在iOS 5中引入了一种新的样式系统。所以你改用UIAppearance系统。

这描述了新的UIAppearance系统如何与MonoTouch配合使用:

http://tirania.org/monomac/archive/2011/Oct-14.html

UIAppearance课程:

http://docs.go-mono.com/index.aspx?link=T%3AMonoTouch.UIKit.UIAppearance

外观的UINavigationBar属性: http://iosapi.xamarin.com/index.aspx?link=P%3AMonoTouch.UIKit.UIProgressView.Appearance

您可以在UINavigationBar的Appearance属性上设置的属性集:

http://iosapi.xamarin.com/index.aspx?link=P%3AMonoTouch.UIKit.UIProgressView.Appearance