2014-01-14 34 views
0

我檢查了所有其他的答案,但我不能得到它使用他們在說什麼工作中心定製titleview的:包含的UIImage和的UILabel

我有一個UIView myTitle,使用幀(0,0,320,44)的包含一個UIImage和一個UILabel。 UIImage和UILabel很好,看起來不錯,但我似乎無法弄清楚如何集中myTitle。

self.navigationItem.titleView = myTitle; 

它顯示出來,看起來不錯,但離左邊太遠。它似乎(邏輯上)與我按下控制器時由框架自動生成的左欄按鈕(後退按鈕)相關。該barbutton根據該寬度具有不同的寬度,並基於此更改myTitle視圖的x。

那麼,我在哪裏可以得到左(和右)barbuttons的寬度,所以我可以弄清楚如何把myTitle放在中心?

我注意到當我改變myTitle的寬度它(邏輯上)將居中(因爲UIImage和UILabel在myTitle中居中)。

+1

忘掉框架,使用自動佈局。 –

回答

0

爲了獲得更多的控制權,您可以使用下面的代碼來設置它,而不是讓左邊的按鈕自動生成。

UIButton *leftButton =[UIButton buttonWithType:UIButtonTypeCustom]; 
[leftButton setFrame:CGRectMake(0, 0, 100, 44)]; 
[leftButton setTitle:@"back" forState:UIControlStateNormal]; 
[leftButton setBackgroundColor:[UIColor greenColor]]; 
[leftButton addTarget:self action:@selector(backButtonClicked) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc] initWithCustomView:leftButton]; 

現在你可以完美地調整titleView的框架,而不會出現太多問題。

+0

這可行,但遠非完美。 – CharlesS

0

我發現它有兩種工作方式;

  • 像Cy-4AH建議使用autolayout;她/他的答案將是答案
  • 不使用自動佈局比我想象的要簡單得多;如果我使titleView Width適合它的內容,它會自動工作;這是用內部自動佈局完成的嗎?

希望這可以幫助別人。

相關問題