如何在xamarin中创建这样的布局?

时间:2014-02-23 21:27:34

标签: ios xamarin.ios xamarin

我是Xamarin和iOS开发的新手。我在创建布局时遇到问题,如下图所示。

http://cdn.vanillaforums.com/xamarin.vanillaforums.com/FileUpload/6f/7eb37b9abb0d8cdcef8d238d1a4b2f.png

我想在顶部和底部有两个固定大小的视图,在中间有一个灵活的视图。我希望中间视图灵活,因为我希望在3,5和4英寸屏幕上具有相同的布局。

你能告诉我一些如何实现这个目标的线索吗?

2 个答案:

答案 0 :(得分:4)

如果您不想支持旋转,则可以创建固定布局,因为在运行时屏幕大小不会更改。在这种情况下,只需将顶视图放在View.Bounds.Height的顶部,底部视图 - requiredBottomViewHeight,中间视图与父视图一样高,减去底部和顶部的高度之和。

如果您需要轮换,请使用:

  • AutoResizingMask
  • 覆盖LayoutSubviews()
  • 或自动布局。为简化自动布局,Frank Krueger named EasyLayout创建了一个很棒的帮助程序类。您可以找到示例here

这些天推荐的方法是使用自动布局和约束。但是,在这种简单的情况下,您可以安全地使下面的代码将生成您想要的布局并支持旋转。您可以通过设置自动调整大小掩码在Storyboard Designer或Interface Builder中生成相同的效果,如下所示。

public override void ViewDidLoad ()
        {
            var topView = new UIView {
                BackgroundColor = UIColor.Red,
                Frame = new RectangleF(0, 0, this.View.Bounds.Width, 50),
                AutoresizingMask = UIViewAutoresizing.FlexibleWidth
            };
            var bottomView = new UIView {
                BackgroundColor = UIColor.Blue,
                Frame = new RectangleF(0, this.View.Bounds.Height - 50, 320, 50),
                AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleWidth
            };
            var middleView = new UIView {
                Frame = new RectangleF(0, topView.Frame.Bottom, this.View.Bounds.Width, this.View.Bounds.Height - topView.Bounds.Height - bottomView.Bounds.Height),
                BackgroundColor = UIColor.Green,
                AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth
            };
            this.View.AddSubviews (topView, middleView, bottomView);

}

答案 1 :(得分:0)

最好的方法是使用UINavigationController作为基本表单。我想通了我,这是最好的处理顶部栏和应用程序中的进一步导航。 然后调用方法SetToolbarHidden。现在你有两个吧。 对于内容区域,请使用uiviewcontroller。然后在UINavigationController中调用带有uiviewcontroller作为参数的PushViewController方法。 而已。 PS抱歉我的答案布局不好我用智能手机做了这个。