如何在DialogViewController(Monotouch.Dialog)上设置背景颜色

环境:使用Monotouch和Monotouch.Dialog库创建iPad应用程序。

我一直试图在DialogViewController上设置背景颜色无济于事。 我的应用程序中有多个视图正在加载卸载。 对于他们,我设法设置背景颜色。

到目前为止我尝试了什么:

  • 在我的应用程序的主窗口上设置背景颜色 – >工作正常。
  • 创建一个简单的UIView,给它一个大小,设置背景颜色并将其加载到窗口 – >工作正常。

但是只要我加载DialogViewController(带有关联的视图),背景颜色总是灰色的。 DialogViewController用于Monotouch.Dialog框架。

我正在将DialogViewController推到导航控制器上,以显示在表格视图中布置的一组按钮。

我必须错过一些基本的东西! 我一直在浏览Monotouch.Dialog代码,并尝试了其他一些东西,但到目前为止我没有解决任何问题。

任何帮助高度赞赏。

鲍里斯

实际上,您需要将背景视图设置为null。 这是表视图后面的视图,例如MonoTouch.Dialog中的分组视图

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html

以下是此类的子类:

using System; using System.Drawing; using System.IO; using MonoTouch.Foundation; using MonoTouch.CoreGraphics; using MonoTouch.Dialog; using MonoTouch.UIKit; namespace MyNameSpace{ public class MySpecialDialogViewController : DialogViewController { public MySpecialDialogViewController (UITableViewStyle style, RootElement root) : base (style, root) { } public override void LoadView () { base.LoadView (); TableView.BackgroundView = null; TableView.BackgroundColor = UIColor.Black; } } } 

“MonoTouch.Dialog”文档中的“自定义DialogViewController”一节对此进行了描述。

你需要inheritanceDialogViewController,如下所示:

 public class ColoredViewController : DialogViewController { [...] public override LoadView () { base.LoadView (); TableView.BackgroundColor = UIColor.Clear; ParentViewController.View.BackgroundColor = UIColor.Red; } } 

是的,埃里克的解决方案现在有效。 如果你想使用图像而不是颜色,我修改了他的下面。

  public override void LoadView () { base.LoadView (); this.TableView.BackgroundView = null; //this.TableView.BackgroundColor = UIColor.Black; var background = UIImage.FromFile ("Images/down.png"); this.TableView.BackgroundColor = UIColor.FromPatternImage(background); } 

我发现使用其他解决方案时模式会重复,因此设置backgroundview对我来说更为可取:

  public override void LoadView () { base.LoadView (); UIImage tickImage = UIImage.FromBundle ("1.jpg"); UIImageView backgroundImageView = new UIImageView (this.View.Bounds); backgroundImageView.Image = tickImage; backgroundImageView.ContentMode = UIViewContentMode.BottomLeft; //your preference TableView.BackgroundView = backgroundImageView; }