Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Панель вкладок смещена вниз за пределы симулятора.

Автор вопроса: JAHeliaОтветов: 2

Я создал пустой проект (XCode 4.2 IOS SDK 5), я добавил к нему новое представление и сделал его корневым контроллером представления внутри appDelegate, поэтому, когда приложение запускается, оно отображает это представление правильно, однако я добавил tabbarcontroller в представление, создал для него IBOutlet внутри вновь созданного представления и добавил эту строку в метод viewDidLoad представления:

[self.view addSubview:self.tabController.view];

поэтому панель вкладок загружается правильно в симуляторе iphone, но с небольшой проблемой, которую я не смог исправить: половина этой панели вкладок сдвинута вниз симулятора, что предотвращает появление заголовков вкладок, точно так же, как на следующем снимке экрана:

Как я могу исправить эту проблему?

xcodeiosiphoneios-simulatorobjective-c

Ответы

Ответ 1 · рейтинг 2 · Evgeny Aleksandrov

Скорее всего из-за строки состояния. Но поскольку подпредставление, в которое вы вставляете контроллер, может быть любого размера, наиболее универсальным решением является:

[tabController.view setFrame:self.view.bounds];

(при условии, что self.view - это представление, куда вы его добавляете)

Ответ 2 · рейтинг 1 · DavidA

Вид с панелью вкладок имеет высоту 480 пикселей, но вид, в который вы его добавляете, меньше этого из-за строки состояния. Это означает, что он начинается на 22 пикселя ниже, а заканчивается на 22 пикселя ниже нижнего края экрана.

Если вы хотите, чтобы панель вкладок была глобальной для приложения, связала ее с IBOutlet в делегате приложения, сделайте это в своем методе didFinishLaunching:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // ...

    // Add the tab bar controller's view to the window and display.
    [window addSubview:tabController.view];
    [window makeKeyAndVisible];

    return YES;
}

Это добавит его в главное окно, а не в другое представление. Это привяжет его к верхней части экрана, поэтому нижняя часть будет внизу экрана.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы