环境:使用Monotouch和Monotouch.Dialog库创建iPad应用程序。
我一直试图在DialogViewController上设置背景颜色无济于事。我的应用程序中有多个视图正在加载卸载。对于非他们我设法设置背景颜色。
到目前为止我尝试过:
但是一旦我加载了DialogViewController(带有关联视图),背景颜色总是灰色的。 DialogViewController用于Monotouch.Dialog框架。
我正在将DialogViewController推到导航控制器上,以显示在表格视图中布置的一组按钮。
我一定错过了一些基本的东西!我一直在查看Monotouch.Dialog代码,并尝试了其他一些方法,但到目前为止我没有解决任何问题。
任何帮助都非常感谢。
鲍里斯
答案 0 :(得分:14)
您实际上需要将背景视图设置为null。这是表视图后面的视图,例如MonoTouch.Dialog
中的分组视图以下是此类的子类:
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;
}
}
}
答案 1 :(得分:8)
MonoTouch.Dialog文档中的“自定义DialogViewController”一节中对此进行了描述。
你需要继承DialogViewController,如下所示:
public class ColoredViewController : DialogViewController {
[...]
public override LoadView ()
{
base.LoadView ();
TableView.BackgroundColor = UIColor.Clear;
ParentViewController.View.BackgroundColor = UIColor.Red;
}
}
答案 2 :(得分:2)
是的,Eric的解决方案现在可以使用了。如果您想使用图像而不是颜色,我修改了下面的内容。
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);
}
答案 3 :(得分:1)
我发现在使用其他解决方案时模式会重复,因此设置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;
}