2014-02-23 75 views
5

我是Xamarin和iOS開發新手。我在創建如下圖所示的佈局時遇到了問題。如何在xamarin中創建這樣的佈局?

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

我想有在頂部固定的大小和底部,一個在中間柔韌性兩種觀點。我希望中間視圖具有靈活性,因爲我希望在3,5和4英寸的屏幕上具有相同的佈局。

你能給我發一些線索怎麼實現嗎?

+1

您是否使用自動佈局?那麼你可以使用這個表達式:V:| [topview(100)] [middleview] [bottomview(100)] |瞭解更多信息:https://developer.apple.com/library/ios/documentation/userexperience/conceptual/AutolayoutPG/Introduction/Introduction.html –

回答

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

} 
0

最好的方法是使用基本窗體的UINavigationController。我想通了,這是最好的處理應用程序的頂部酒吧和進一步的導航。 然後調用方法SetToolbarHidden。現在你有兩個酒吧。 對於內容區域請使用uiviewcontroller。然後使用uiviewcontroller作爲參數,在UINavigationController中調用方法PushViewController。 就是這樣。 PS對不起,我的答案佈局糟糕我用智能手機做了這個。