Как программно установить изображение в NavBar?
У меня есть подробное представление с панелью навигации с кнопкой «Назад» и именем для представления. Панель навигации устанавливается программно. Представленное имя задается следующим образом.
self.title = NSLocalizedString(name, @"");
Название зависит от представленного представления.
- Переименование проекта xcode 4 и фактической папки
- Как распределить приложение ios без проводов без управления UDID и перекомпиляции
- Уникальные атрибуты Core Data
- Есть ли способ для Interface Builder визуализировать представления IBDesignable, которые не переопределяют drawRect:
- Трассировка стека или дополнительная информация о необработанном исключении в Xcode / iPhone
Теперь я хотел бы также представить небольшую иконку на панели навигации, которая также зависит от вида.
Как мне это сделать?
- Динамическая переадресация: подавление предупреждения о неполной реализации
- Как настроить CMake для создания приложения для iPhone
- Какова моя «цель» и как мне добавить файл для модульного тестирования?
- Как представить модальный поверх текущего вида в Swift
- Swift Playground - Файлы недоступны для чтения
- Отсутствие предупреждений о файлах, появившихся после обновления до Xcode 4
- AppDelegate, rootViewController и presentViewController
- Ошибка кодового знака в macOS High Sierra Xcode - ресурс fork, информация Finder или подобный детрит не разрешены
Вы можете установить обратное обратное изображение в navigationBar.
didFinishLaunchingWithOptions
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"title_bar.png"] forBarMetrics:UIBarMetricsDefault];
Или вы можете настроить изображение на панели навигации в любом представлении, используя
UINavigationBar *navBar = [[self navigationController] navigationBar]; UIImage *image = [UIImage imageNamed:@"TopBar.png"]; [navBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
Или вы можете установить вид на свою ссылку NavigationBar
[[UINavigationBar appearance] addSubview:yourView];
или
self.navigationItem.titleView = YourView;
И установите заголовок, используя h
self.navigationItem.title = @"Your Title";
И вы можете получить navigationBarButton, используя это
-(void)getRightBarBtn { UIButton *Btn =[UIButton buttonWithType:UIButtonTypeCustom]; [Btn setFrame:CGRectMake(0.0f,0.0f,68.0f,30.0f)]; [Btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"yourImage.png"]] forState:UIControlStateNormal]; //[Btn setTitle:@"OK" forState:UIControlStateNormal]; //Btn.titleLabel.font = [UIFont fontWithName:@"Georgia" size:14]; [Btn addTarget:self action:@selector(yourBtnPress:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithCustomView:Btn]; [self.navigationItem setRightBarButtonItem:addButton]; }
И установите простой образ на панели навигации.
UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"star.png"]]; UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:image]; self.navigationItem.rightBarButtonItem = backBarButton;
Вам нужно подclassифицировать UINavigationBar. Затем в drawRect выполните что-то вроде:
[[UIImage imageNamed...] drawInRect:...]
и позвоните в супер-метод
Добавьте этот код в viewDidLoad
в ViewController:
UIImage *image = [UIImage imageNamed: @"myIcon.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = CGRectMake(5, 2, 100, 39); [self.navigationController.navigationBar addSubview:imageView];
imageView также может быть объявлен как переменная экземпляра, поэтому вы можете получить к нему доступ после его добавления (например, если вы хотите удалить значок с вашего навигационного блока в какой-то момент).
UIButton *homeBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 46, 28)]; [homeBtn setBackgroundImage:[UIImage imageNamed:@"homeBtn.png"] forState:UIControlStateNormal]; [homeBtn addTarget:self action:@selector(homeBtnPressed) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *navHomeBtn=[[[UIBarButtonItem alloc] initWithCustomView:homeBtn] autorelease]; self.navigationItem.rightBarButtonItem=navHomeBtn; [homeBtn release];