2010-09-15 6 views
1

У меня есть контроллер навигации, который я не хочу использовать на весь экран. В частности, я хочу поместить изображение логотипа в панель в верхней части экрана. К сожалению, навигационный контроллер, похоже, не разработан таким образом. В построителе интерфейса я не могу заставить его заняться частью экрана. Как бы вы достигли эффекта изображения логотипа вверху и контроллера навигации, занимающего остальную часть экрана?Контроллер навигации, который не использует весь экран

ответ

2

Я сам этого не делал, но это должно быть довольно прямолинейно. Вам нужен контроллер представления обертки, чтобы быть его родителем (назовем его MyWrapperViewController), и его вид иерархия в конечном итоге может выглядеть примерно так:

 
UIView -+ (hooked up to the view outlet in MyWrapperViewController) 
     | 
     +-- UIView (Your logo goes here) 
     | 
     +-- UIView (The "child" navigation controller's view) 

мнение логотипа может быть UIView, или UIImageView или любой класс подходит для контента.

При создании UINavigationController где-то для вашего MyWrapperViewController класса, вы можете изменить его viewbounds к чему-то меньше, чем полный экран (возможно, размер экрана минус размер вашего логотипа, с соответствующим origin смещением так что ниже логотип), а затем добавить его в качестве подзаголовка.

+0

Это в основном работало, но я столкнулся с проблемой с верхним UIView [перекрытием строки состояния] (http://stackoverflow.com/questions/3767066/layered-uiviewcontrollers-overlaps-status-bar) – Casebash