将背景图像添加到monotouch.dialog视图

时间:2012-02-29 20:15:11

标签: c# ios xamarin.ios monodevelop monotouch.dialog

我正在尝试使用MonoTouch和MonoTouch.Dialog构建应用程序。

我非常喜欢dropbox设计欢迎视图的方式。当应用程序第一次打开时,您会看到一个类似

的屏幕

enter image description here

它类似于我需要做的事情。我首先需要检查我的用户是否是该产品的新用户,或者已经拥有一个帐户。

他们的欢迎屏幕对我来说就像一个导航控制器(对不起,如果我错了)

我希望能够将自己的商家徽标添加到类似于投递箱的视图中,并在视图底部添加导航按钮

MonoTouch.Dialog可以这样做吗?

2 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:2)

我认为Anuj回答了大部分内容 - 除了徽标部分。你可能想要一个漂亮的,渐变式的背景,就像他提出的那样(并且应该得到赞誉; - )。

从那里创建透明(背景)徽标并将其添加到背景之上可能更容易。为此,您可以在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;
    }