2016-09-20 4 views
0

Моя проблема заключается в том, что при приеме вызова или в точке доступа WiFi активна нижняя панель вкладок сдвигается за пределы экрана.Таблица выводов за пределами экрана

No extended status bar Extended status bar

Похоже, это то, что мне нужно использовать, но я не удается с ним developer.xamarin.com/api/property/MonoTouch.UIKit.UIView.AutoresizingMask/

Как исправить эту проблему?

ответ

1

Это проблема с компоновкой.

Я буду использовать размер экрана iPhone5S в качестве примера, чтобы объяснить это.

Для нормальной ситуации размер вашего вида «Рамка = {X = 0, Y = 0, Ширина = 375, Высота = 667)», равен размеру экрана, но система iOS сделает весь кадр представления « Рамка = {X = 0, Y = 20, Ширина = 375, Высота = 647} ", когда активирована личная горячая точка.

И он также вызовет все методы вида «LayoutSubviews», вы можете поймать его и обработать, как хотите.

Это образец для вас, вы должны найти решение самостоятельно в соответствии с ним.

using System; 
using CoreGraphics; 
using UIKit; 

namespace TestLayoutSubview 
{ 
    public partial class ViewController : UIViewController 
    { 
     private MyView myView; 

     protected ViewController(IntPtr handle) : base(handle) 
     { 
      // Note: this .ctor should not contain any initialization logic. 
     } 

     public override void LoadView() 
     { 
      myView = new MyView(); 
      this.View = myView; 
     } 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      // Perform any additional setup after loading the view, typically from a nib. 
     } 

     public override void DidReceiveMemoryWarning() 
     { 
      base.DidReceiveMemoryWarning(); 
      // Release any cached data, images, etc that aren't in use. 
     } 
    } 

    class MyView : UIView 
    { 
     private UIView bottomBar; 

     public MyView() 
     { 
      this.BackgroundColor = UIColor.Red; 

      bottomBar = new UIView(); 
      bottomBar.BackgroundColor = UIColor.Green; 
      this.AddSubview(bottomBar); 

      nfloat barHeight = 50; 
      bottomBar.Frame = new CGRect(0, UIScreen.MainScreen.Bounds.Height - barHeight, UIScreen.MainScreen.Bounds.Width,barHeight); 
     } 

     public override void LayoutSubviews() 
     { 
      base.LayoutSubviews(); 
      Console.WriteLine("Frame is changed."); 
      Console.WriteLine("Frame = "+Frame); 

      nfloat barHeight = 50; 
      bottomBar.Frame = new CGRect(0, UIScreen.MainScreen.Bounds.Height - barHeight - Frame.Y, UIScreen.MainScreen.Bounds.Width, barHeight); 
     } 
    } 
} 

Надеюсь, это может вам помочь.

Если вам все еще нужен совет, оставьте сообщение здесь, я проверю его последним.

0

Это может быть выполнено с использованием противопоказаний, а не для автоматического изменения размера маски. Если ваш верхний бар имеет фиксированную высоту, то ваш вид снизу имеет фиксированную высоту, и ваш средний вид не имеет фиксированной высоты, а затем, когда строка состояния будет расширяться, средний вид будет уменьшаться, а не уменьшать все вниз. Ниже приведено руководство по ограничениям

https://developer.xamarin.com/guides/ios/user_interface/designer/designer_auto_layout/

Смежные вопросы