Добавление фонового изображения в представление monotouch.dialog - PullRequest
4 голосов
/ 01 марта 2012

Я пытаюсь создать приложение, используя MonoTouch и MonoTouch.Dialog.

Мне очень нравится, как Dropbox разработал их приветствие.Когда приложение открывается в первый раз, у вас появляется экран типа

enter image description here

Это похоже на то, что мне нужно сделать.Сначала мне нужно проверить, является ли мой пользователь новичком в продукте или уже имеет учетную запись.

Их экран приветствия выглядит для меня как контроллер навигации (извините, если я не прав)

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

Может ли MonoTouch.Dialog сделать что-то подобное?

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Как правило, сложные фоновые представления должны быть установлены путем добавления UIImageVIew в качестве подпредставления. В противном случае, в случае Dropbox, они используют повторяющийся шаблон изображения:

public class MyDialogViewController : DialogViewController {

    public MyDialogViewController (RootElement root) 
        : base (root) {
    }

    public override void LoadView () {
        base.LoadView ();
        this.TableView.BackgroundColor = UIColor.Clear;
        var background = UIImage.FromFile ("background.png");
        ParentViewController.View.BackgroundColor = UIColor.FromPatternImage(background);
    }
2 голосов
/ 01 марта 2012

Я думаю, что Анудж ответил на большинство из них - кроме части логотипа. Вы, вероятно, хотите получить красивый, градиентный фон, как он предлагает (и должен получить кредит; -).

Оттуда может быть проще создать прозрачный (фоновый) логотип и добавить его поверх фона. Для этого вы можете добавить UIImage в TableView внутри DialogViewController, который вы будете использовать.

Есть много других способов сделать это. Это гарантирует, что ваши элементы MT.D будут отображаться под TableHeaderView, где находится ваш логотип.

Вот быстрый (и очень грязный) пример кода для добавления изображения в заголовок:

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
       var root = new RootElement ("Welcome to MonoTouch") {
            new Section (String.Empty) {
                new StyledStringElement ("I'm already a MonoTouch user") {
                    Accessory = UITableViewCellAccessory.DisclosureIndicator
                },
                new StyledStringElement ("I'm new to MonoTouch") {
                    Accessory = UITableViewCellAccessory.DisclosureIndicator
                }
            }
        };

        var dv = new DialogViewController (root) {
            Autorotate = true
        };
        var data = NSData.FromUrl (new NSUrl ("https://github.com/xamarin/monotouch-samples/blob/master/AVCaptureFrames/Images/Icons/114_icon.png?raw=true"));
        var logo = UIImage.LoadFromData (data);
        dv.TableView.TableHeaderView = new UIImageView (logo);
        navigation.PushViewController (dv, true);               

        window.MakeKeyAndVisible ();

        // On iOS5 we use the new window.RootViewController, on older versions, we add the subview
        if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0))
            window.RootViewController = navigation; 
        else
            window.AddSubview (navigation.View);

        return true;
    }
...