2013-12-11 3 views
2

viewDidLayoutSubviews에서 프레임을 수정하는 일반적인 대답 이후로 묻습니다. 내 코드에서 실수를 발견하지 못한다면 작동하지 않습니다. 프레임은 올바른 너비와 높이로 설정되지만 iOS 7은 프레임을 고려하지 않습니다.네비게이션 아이템 IOS7에서 네비게이션 바를 중심으로하는 제목보기가 불가능합니까?

현재, 오래 전에 출시 된 응용 프로그램은 다음과 같습니다 및 iOS 6 및 7에서 작동 : 내가하고 싶은 모든 로고를 넣어 https://www.dropbox.com/s/pzyv2vhtlmlxkoe/Photo%202013-12-11%2009%2047%2030.png

-(void)viewWillAppear:(BOOL)animated { 
    UIImageView *iv=[[UIImageView alloc] initWithFrame:r(320-102/2,0,102,44)]; 
    iv.image=[UIImage imageNamed:@"Eksjologo5bar.png"]; 
    self.navigationItem.titleView=iv; 
    [iv release]; 
} 

-(void)viewDidLayoutSubviews { 
    CGRect frame=self.navigationItem.titleView.frame; 
    frame.size.width=102; 
    frame.size.height=44; 
    self.navigationItem.titleView.frame=frame; 
} 

: https://itunes.apple.com/se/app/eksjo/id435475192?mt=8

다시 컴파일이 있습니다 이미지를 탐색 바 중앙에 놓습니다. 이 작업을 수행하고 iOS 6.x와 여전히 호환되도록 viewWillAppear 코드에 대한 최소 코드 변경을 찾고 있습니다.

편집 : iOS 6 문제 일 수도 있고 iOS 7 문제가 아닐 수도 있습니다. My UINavigationitem's TitleView getting expanded in ios 6 여기

답변

12

당신은 내가있는 UIView에있는 UIImageView 인스턴스를 추가 것을 알 수 있습니다 내가

UIImageView *logoImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, desired_image_width, desired_image_height)]; 
// if you need to resize the image to fit the UIImageView frame 
logoImage.contentMode = UIViewContentModeScaleAspectFit; 
// no extension name needed for image_name 
[logoImage setImage:[UIImage imageNamed:@"image_name"]]; 
UIView *logoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, logoImage.frame.size.width, logoImage.frame.size.height)]; 
[logoView addSubview:logoImage]; 
self.navigationItem.titleView = logoView; 

을 할 것입니다 : 그것은이 질문처럼 수행해야 이유를 설명 할 수 있다면, 내 질문에 대한 답변입니다 navigationItem의 titleView를 설정하기 전에 인스턴스를 만듭니다. UIImageView 인스턴스를 navigationItem의 titleView에 직접 설정할 수는 있지만 다음 페이지로 이동해도 뒤로 버튼으로 로고를 표시하려면 로고가 중앙에서 벗어납니다. 탐색 모음은 자동으로 UIView를 중앙에 배치하지만 UIImageView (UIImageView는 UIView의 하위 클래스이지만 그 이유는 모르겠습니다).

+0

완벽하게 작동합니다! 감사 –

관련 문제