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

标签 ios xamarin.ios xamarin

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

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

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

能否请您给我一些实现该目标的线索?

最佳答案

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

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

  • 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);

}

关于ios - 如何在 xamarin 中创建这样的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21974783/

相关文章:

ios - 如何频繁更新observeValueForKeyPath的数据?

iphone - 如何将 UIButton 添加到 UIButton

javascript - Monotouch 中 Webview 的 Titanium Javascript fireEvent 相当于吗?

c# - 如何处理在一个平台上同步但在另一个平台上异步的代码

ios - 从delphi调用 objective-c 代码块

ios - 循环播放 swift video avplayer swift

c# - Xamarin.iOS 应用程序 (C#) 中的手指绘图

ios - 如何在 Xamarin Studio 中检查预构建事件的构建配置

ios - 以前工作的 Xamarin iOS 项目无法构建并出现 MSB6006 错误

xamarin - 检测 ViewModel 的关联 View 是否显示/不显示