2017-10-26 2 views
1

배포 대상이 iOS 9.3 인 앱이 있습니다.leftBarButtonItem iOS11에서 setTitleTextAttributes 문제가 발생했습니다.

방금 ​​Xcode 9.0.1로 업그레이드했으며 모든 시뮬레이터 장치와 iOS11을 실행하는 자체 iPhone7 장치에서이 문제를 발견했습니다. 이 문제는 < iOS11을 실행하는 기기에는 영향을 미치지 않습니다. 다음과 같이

내가 (있는 viewDidLoad에서) 사용자 정의 글꼴로, 좌측 바 버튼 항목을 초기화하는하고 다음과 같이

UIBarButtonItem *safeModeButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(toggleSafeMode)]; 
[safeModeButton setTitleTextAttributes: 
[NSDictionary dictionaryWithObjectsAndKeys: 
    [UIFont fontWithName:@"Sosa-Regular" size:31],NSFontAttributeName, 
    nil]forState:UIControlStateNormal]; 
[self.navigationItem setLeftBarButtonItem:safeModeButton]; 
self.navigationItem.leftItemsSupplementBackButton = YES; 

을 조금 후에 다른 방법으로, 나는 바 버튼의 제목을 설정 :

self.navigationItem.leftBarButtonItem.title = @"è"; 

문제는 렌더링해야하는 심볼 대신 버튼의 실제 텍스트를 보는 것입니다. "Sosa-Regular"글꼴은 상징입니다.

이전에 Xcode9/iOS11 업그레이드 전에이 문제가 없었습니다. 나는 제목을 설정하기 전에 명시 적으로 titleTextAttributes를 설정하려고 시도했지만, 항상 그걸 보여줍니다. 마치 titleTextAttributes가 영구적이지 않거나 viewDidLoad 외부에 제목을 설정하면 버튼의 titleTextAttributes가 재설정됩니다. viewDidLoad에 제목 텍스트를 설정하면 모두 정상적으로 작동합니다.

모든 아이디어를 얻을 수 있습니다.

답변

1

잠시 게임을 한 후에 이에 대한 답변을 찾았습니다. UIBarButtonItem을 초기화 한 직후 enabled = false로 설정했습니다. UIControlStateNormal에 대한 제목 텍스트 속성 만 지정 했으므로 UIControlStateDisabled에는 적용 할 수 없습니다. 이상하게도 iOS11 만 등장했습니다. 그래서이 줄을 추가하면 문제가 해결되었습니다.

[safeModeButton setTitleTextAttributes: 
[NSDictionary dictionaryWithObjectsAndKeys: 
    [UIFont fontWithName:@"Sosa-Regular" size:31],NSFontAttributeName, 
    nil]forState:UIControlStateDisabled]; 
관련 문제