Monotouch自动调整iphone中的视图大小

时间:2009-10-04 22:09:51

标签: iphone xamarin.ios

我在界面构建器中创建了一个视图,其中包含另一个视图(内容区域)和底部的按钮栏。

层次结构如下:

->View
--->mapContainer UIView
----->map MKMapView
----->OverlayView UIView
--->ToolBar UIToolBar

我想在隐藏ToolBar时将mapContainer调整为完整窗口。 我希望地图和OverlayView调整大小到mapContainer大小

我尝试了以下代码,但它没有效果。请指教?

public override void ViewDidLoad ()
{
  base.ViewDidLoad ();
  this.mapContainer.AutosizesSubviews = true ;
  this.View.AutosizesSubviews = true ;
  try
  {
    this.mapContainer.AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth ;
    this.map.AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth ;
    this.map.SizeToFit();
    this.mapContainer.SizeToFit();
    this.map.SizeToFit();
    this.View.Frame = new System.Drawing.RectangleF(0,0,this.View.Frame.Width, this.View.Frame.Height );
    this.mapContainer.LayoutSubviews();

  }
  catch(Exception ex)
  {
    Console.Write(ex.ToString());
  }
}

2 个答案:

答案 0 :(得分:1)

您还可以尝试使用您的类在重写方法public override void LayoutSubviews中重绘子视图。

在那里你可以重置所有帧的帧。方法SizeToFit()有一个不起作用的倾向,因为它的名字听起来......所以第一个大小适合,然后重置框架。

希望有所帮助:)

答案 1 :(得分:0)

查看这篇文章可能会对你有所帮助。它与monotouch无关,但它会给出如何在IB中将元素排列在一起的很好的概念。 http://programmingobsession.blogspot.com/2009/05/real-world-iphone-rotation-part-1.html