2014-02-21 33 views
0


我試圖調整我的iOS 7應用程序。它是用Xamarin和C#編寫的。
我遇到了導航欄中左側按鈕的額外填充問題。
我有渲染我的後退按鈕的輔助方法,它看起來是這樣的:
MonoTouch - 帶有額外填充的NavigationBar ios 7

public static UIBarButtonItem GetBackButton (this UIViewController controller) 
    { 
     var backImage = new UIImage ("Images/back.png"); 
     var backButton = new UIButton (UIButtonType.Custom); 
     backButton.Frame = new RectangleF (0, 0, 44, 44); 
     backButton.SetImage (backImage, UIControlState.Normal); 
     backButton.TouchUpInside += (object sender, EventArgs e) => { 
      var cancelBackNavigation = false; 
      if (controller is UIViewControllerBase) { 
       if (((UIViewControllerBase)controller).PrepareNavigateBack() != true) { 
        cancelBackNavigation = true; 
       }    
      } 
      if (cancelBackNavigation == false) { 
       controller.NavigationController.PopViewControllerAnimated (true); 
      } 
     }; 

     return new UIBarButtonItem (backButton); 
    } 


的導航欄增加了大量填充的後退按鈕之前,使背按鈕內部的圖像看起來很遠離其真實的位置。上面的代碼在iOS 6中正常工作。
我不想使用ContentEdgeInsets,因爲它會拉伸圖像並使其變得醜陋。
任何人都有想要做什麼的想法?
enter image description here

回答

0

我試圖查找您的問題,結果發現,第一,你需要隱藏後退按鈕如下:

NavigationItem.HidesBackButton = true; 

然後設置按鈕,你需要這樣設置:

NavigationItem.BackBarButtonItem = yourButton; 

這樣,你就沒有額外的縮進。

而且您可能會發現以下問題有用: Make a custom back button for UINavigationController

+0

不幸的是你的建議不工作...我沒有看到後退按鈕了。 – Grendizer

0

這是怎麼設置我的導航欄

controller.View.BackgroundColor = Theme.BackgroundColor; 
controller.NavigationItem.SetHidesBackButton (true, false); 
controller.NavigationController.Toolbar.TintColor = Theme.BackgroundColor; 
controller.NavigationController.NavigationBar.TintColor = Theme.BackgroundColor; 
controller.NavigationController.SetNavigationBarHidden (show == false, false); 
controller.NavigationController.NavigationBar.BackgroundColor = Theme.BackgroundColor; 
controller.NavigationController.NavigationBar.SetTitleTextAttributes (Theme.NavigationBarTextAttributes); 
controller.NavigationController.NavigationBar.Subviews [0].Alpha = 0.01f;