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

时间:2011-09-05 19:45:20

标签: ios ipad xamarin.ios background-color monotouch.dialog

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

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

到目前为止我尝试过:

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

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

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

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

任何帮助都非常感谢。

鲍里斯

4 个答案:

答案 0 :(得分:14)

您实际上需要将背景视图设置为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;
        }
     }

  }

答案 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;
    }