2015-01-20 4 views
0

Я хотел бы создать UINavigationBar, который не имеет цветного фона.UINavigationBar without backgroundColor

Я попытался

self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; 

и

self.navigationController.navigationBar.backgroundColor = nil; 

, но не может решить эту проблему. Я также попытался установить тот же цвет для панели навигации, которую я использую для self.view.backgroundColor, но я не мог переопределить исходный. (Я использую Раскадровка может быть, что вызывает проблемы, но не уверен, потому что я могу манипулировать tintColor с кодом.)

+0

Dupe http://stackoverflow.com/questions/2315862/make-uinavigationbar-transparent –

+0

Вы не можете установить navigationBar для очистки с помощью navigationItem. Вы можете сделать это, установив hiddenBar скрытым и добавить пользовательскую кнопку в верхнем левом или верхнем правом углу вашего объекта navigationItem. – simalone

ответ

1
self.navigationController.navigationBarHidden = NO; 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] 
          forBarMetrics:UIBarMetricsDefault]; 
    self.navigationController.navigationBar.shadowImage = [UIImage new]; 
    self.navigationController.navigationBar.translucent = YES; 

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
//[backButton setImage:[UIImage imageNamed:@"you_back_image"] forState:UIControlStateNormal]; this is the image you would use as a back image 
[backButton setTitle:@"back" forState:UIControlStateNormal]; 
[backButton sizeToFit]; 
[backButton addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem* backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
self.navigationItem.leftBarButtonItem = backBarButton; 

, а затем написать метод goBack, который зависит от того, если вы представили или протолкнул текущий ViewController.

- (void)goBack { 
//[self dismissViewControllerAnimated:YES] 
//[self.navigationController popViewControllerAnimated:YES]; 
} 
+0

К сожалению, он скрывает мою кнопку с обратной связью, я получил тот же результат с '[self.navigationController.navigationBar setHidden: NO];' – rihe

+0

Я бы предложил создать пользовательский backButton, я вывешу код выше. – trdavidson

0

попробовать это в методе appDelegates didFinishLaunchingWithOptions он очищает навигационную панель в цвет фона

[[UINavigationBar внешний вид] setBarTintColor: [UIColor clearColor]];

Смежные вопросы