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

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

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

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

скриншот

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


person JAHelia    schedule 20.11.2011    source источник


Ответы (2)


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

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

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

person Evgeny Aleksandrov    schedule 20.11.2011

Вид с панелью вкладок имеет высоту 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;
}

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

person DavidA    schedule 20.11.2011
comment
но шаблон пустого приложения в XCode 4.2 не поставляется с каким-либо файлом xib, и я не хочу создавать tabbarcontroller и подключать его программно, скорее, я хочу разместить tabbarcontroller во что-то вроде MainWindow.xib (как в предыдущих версиях xcode), а затем создайте для него IBOutlet в AppDelegate, как я могу сделать это в XCode 4.2? p.s. вот почему я создал новый контроллер представления с файлом xib, чтобы поместить в него этот tabbarcontroller - person JAHelia; 20.11.2011