Как установить цвет фона на DialogViewController (Monotouch.Dialog) - PullRequest
1 голос
/ 05 сентября 2011

среда: создание приложения для iPad с использованием Monotouch и библиотеки Monotouch.Dialog.

Я пытался установить цвет фона на DialogViewController, но безрезультатно. У меня есть несколько просмотров в моем приложении, загружаемых без загрузки. Для не из них мне удается установить цвет фона.

Что я пробовал до сих пор:

  • Установить цвет фона в главном окне моего приложения -> отлично работает.
  • Создайте простой UIView, задайте ему размер, установите цвет фона и загрузите его в окно -> отлично работает.

Но как только я загружаю DialogViewController (со связанным представлением), цвет фона всегда становится серым. DialogViewController используется из инфраструктуры Monotouch.Dialog.

Я помещаю DialogViewController в контроллер навигации, чтобы показать набор кнопок, расположенных в виде таблицы.

Я, должно быть, упускаю что-то фундаментальное! Я просматривал код Monotouch.Dialog и попробовал несколько других вещей, но пока что ничего не решило мою проблему.

Любая помощь высоко ценится.

борис

Ответы [ 4 ]

14 голосов
/ 30 июля 2012

Вам на самом деле нужно установить фоновое представление на ноль.Это представление, которое находится за табличным представлением, например, сгруппированное в 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;
        }
     }

  }
8 голосов
/ 06 сентября 2011

Это описано в разделе «Настройка DialogViewController» в документации MonoTouch.Dialog.

Вам необходимо создать подкласс DialogViewController, например:

public class ColoredViewController : DialogViewController {
    [...]

    public override LoadView ()
    {
        base.LoadView ();
        TableView.BackgroundColor = UIColor.Clear;
        ParentViewController.View.BackgroundColor = UIColor.Red;
    }
}
2 голосов
/ 29 ноября 2012

Да, решение Эрика работает сейчас.Я изменил его ниже, если вы хотите использовать изображение вместо цвета.

        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);
    }
1 голос
/ 29 августа 2013

Я считаю, что шаблон дублируется при использовании других решений, и поэтому настройка 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;
    }
...