给 monotouch.dialog 视图添加背景图片

4
我正在尝试使用MonoTouch和MonoTouch.Dialog构建一个应用程序。
我非常喜欢Dropbox设计的欢迎界面。当应用程序第一次打开时,会呈现一个屏幕,如下图所示。
这与我需要做的类似。首先,我需要检查我的用户是新用户还是已经有帐户。
在我的观察中,他们的欢迎界面看起来像一个导航控制器(如果我错了,请原谅)。
我想能够向视图中添加我的商标,类似于Dropbox,并在视图底部添加导航按钮。
MonoTouch.Dialog可以做到这样吗?
2个回答

3

通常,复杂的背景视图应该通过将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);
    }

嗨@Anuj,按钮对齐到视图底部怎么样? - Diver Dan
这在我的任何iPad上都无法工作(模拟器、真实设备、Retina和非Retina)。有什么想法吗? - Timm
另外,尝试在推出另一个屏幕后返回到屏幕,但对话框不见了。必须将代码移动到“ViewWillAppear”。 - Timm

2

我认为Anuj已经回答了大部分问题,除了标志部分。你可能想要一个像他提出的那样漂亮的渐变背景(应该给他功劳;-)。

从那里开始,创建一个透明(背景)标志并将其添加到背景上可能会更容易。要做到这一点,您可以在使用的DialogViewController内的TableView中添加一个UIImage

有许多其他方法可以实现。这种方法确保您的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;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接