2014-11-25 70 views
0

好吧,我看到了其他問題,他們建議使用FluentLayouts,但我想這樣做沒有它只使用約束。 所以問題是這樣的: 我創建了這個應用程序的導航欄和tabBar,現在我試圖插入一個MyViewController 2按鈕,其中一個在中間(我張貼的代碼)和右下導航條。Xamarin和自動佈局沒有界面生成器

//------Appdelegate.cs 
    myViewController = new MyViewController(); 
    UINavigationController myNavController = new UINavigationController (myViewController); 
    window.RootViewController = myNavController; 
//-----MyViewController 
public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      button1.SetTitle("Button1", UIControlState.Normal); 
      button1.BackgroundColor = UIColor.Red; 
      button2.SetTitle("Button2", UIControlState.Normal); 
      button2.BackgroundColor = UIColor.Gray; 
      View.AddSubview (button1); 
      View.AddSubview (button2); 
      View.AddConstraint (NSLayoutConstraint.Create (button1, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, View,NSLayoutAttribute.CenterX, 1, 0)); 
      View.AddConstraint (NSLayoutConstraint.Create (button1, NSLayoutAttribute.CenterY, NSLayoutRelation.Equal, View,NSLayoutAttribute.CenterY, 1, 0)); 
} 

有了這個代碼,因爲它定位在(0,0),我不知道爲什麼,有人可以給我一個提示Button1的沒有出現呢?另一個問題是我不知道如何獲得導航欄的底部值,所以我可以把button2放在那裏。我跟着this文章。

回答

0

你應該做這樣的事情:

button1.TranslatesAutoresizingMaskIntoConstraints = false; 
button2.TranslatesAutoresizingMaskIntoConstraints = false; 

所以,你可以用你的約束,否則會被autoresizingmask被覆蓋。 之前,您不應使用

EdgesForExtendedLayout = UIRectEdge.None; 

我認爲你的按鈕錯位置的最後一行

+0

是啊,我創立了關於AutoresizingMask給出,但問題是,有沒有按鈕都與此同時,與EdgesForExtendedLayout = UIRectEdge.None;所有的問題都解決了。謝謝 – DQuaglio 2014-12-01 09:40:20