2009-10-04 1 views
1

Я создал представление в построителе интерфейса, которое содержит другое представление (область содержимого) и панель кнопок внизу.Monotouch auto resizing views in iphone

Иерархия как:

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

Я хотел бы, чтобы изменить размер mapContainer в полном окне, когда ToolBar скрыта. Я хотел бы, чтобы карта и OverlayView изменили размер до mapContainer size

Я попытался использовать следующий код, но он не имеет никакого эффекта. Пожалуйста, порекомендуйте?

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

ответ

1

Вы также можете попытаться выполнить перерисовку подвью в переопределенном методе public override void LayoutSubviews с вашим классом.

Там вы можете сбросить рамки всех ваших кадров. Метод SizeToFit() имеет тенденцию не работать, поскольку это имя звучит ... Итак, первый размер, чтобы соответствовать, а затем сбросить фрейм.

Надеюсь, что это поможет :)