2014-04-11 169 views
1

我已經爲特定的ViewController設置了一個ImageView作爲標題視圖,而其他控制器具有UILabel作爲titleView。我用下面的代碼來設置標題視圖,UINavigationBar標題視圖對齊問題

UIImageView *imageTitle = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Logo"]]; 
[self.navigationController.navigationBar.topItem setTitleView:imageTitle]; 

我一直在使用這一個也試過,

UIImageView *imageTitle = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Logo"]]; 
[self.navigationItem setTitleView:imageTitle]; 

的問題是,當我突然回視圖控制器標題視圖 在左邊停留幾秒鐘。我不確定這是什麼原因?請讓我知道我要去哪裏錯了?enter image description here

P.S:問題僅在iOS 7中出現!

下面是這個問題的樣本項目 - https://dl.dropboxusercontent.com/u/97646145/Issue/NavigationTitleView.zip

更新

由於@FahimParkar建議,我用了一個320x44圖像的titleview的。由於圖像很寬,定位延遲似乎很小。 這是這個問題的唯一解決方案嗎?

鏈接下載試用項目,320x44圖片 - >https://dl.dropboxusercontent.com/u/97646145/Issue/NavigationTitleView_Updated.zip

+0

你能檢查這一個:http://stackoverflow.com/questions/15199980/how-to-put-an-image-in-the-center-of-navigationbar-of-a-uiviewcontroller或http:/ /stackoverflow.com/questions/17361500/set-navigation-bar-image-in-ios-7 –

+0

@DhavalBhadania No ..一個是關於導航欄...另一個是關於如何設置標題視圖..我已經設置了標題視圖,但它彈出後有問題! – Nina

+0

它是幾秒?之後就沒事了? –

回答

1

你有兩個選擇正確設置導航。

第一:

設置titleview的像你一樣喜歡波紋管: -

- (void)viewDidLoad 
{ 

    UIView *navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)]; 
    UIImageView *imgviw=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 20, 20)]; 
    imgviw.backgroundColor = [UIColor blackColor]; 

    imgviw.center=navView.center; // this is display your image at center of navigation bar. 
    imgviw.image=[UIImage imageNamed:@"passowrd.png"]; 
    [navView addSubview:imgviw]; 

    self.navigationItem.titleView = navView; 
    [super viewDidLoad]; 
} 

該輸出,如: -

enter image description here

二:

將導航圖像設置爲您對特殊要求的要求view-controller。用相同尺寸的導航欄創建導航圖像。並使用貝婁代碼進行設置。

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Navbar.png"] forBarMetrics:UIBarMetricsDefault]; 
0

可能存在autoresizing

UIImageView* imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LOGO.png"]]; 
imgView.autoresizingMask=UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
imgView.contentMode=UIViewContentModeScaleAspectFit; 
self.navigationItem.titleView = imgView; 
+0

仍然發生! – Nina

+0

在titleView中添加圖像的位置?在'viewDidLoad'或'viewWiilAppear'中? –

+0

我有一個單獨的類堆棧所有主視圖控制器,我在這個類中做這個部分.. – Nina

1

一個問題,在您的ViewWillAppear方法試試這個代碼希望這可以幫助你:

UIImage *image = [UIImage imageNamed: @"Logo"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; 

self.navigationItem.titleView = imageView; 
0

您需要設置裏面viewDidLoad而不是viewWillAppear您的導航欄標題視圖。