0

В моем основном представлении я добавляю обычный UIToolbar к нижней части рамки, в ландшафте он не становится меньше? Это потому, что я не поставляю пейзажные изображения, или я не вижу чего-то еще? Все остальные панели инструментов в UINavigationController меняют размер в ландшафте.UIToolbar не становится меньше в ландшафте

Вот как я добавляю это на экран.

toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, SCREEN_HEIGHT-64, SCREEN_WIDTH, 44)]; 
toolbar.translatesAutoresizingMaskIntoConstraints = YES; 
[self.view addSubview:toolbar]; 
[self setupToolbarItems]; 

setupToolbarItems просто создает некоторые изображения для кнопок на панели и устанавливает их.

ответ

6

UIToolbar, который вы добавляете самостоятельно, не будет волшебным образом изменять высоту. Если вы хотите, чтобы это произошло, вы должны сами изменить высоту в ответ на изменение ориентации приложения.

Поведение, которое вы наблюдали, когда панель меняет высоту, является особенностью UINavigationController; он изменяет высоту своей панели навигации и панели инструментов в ответ на изменение ориентации (как объясняется в моей книге: http://www.apeth.com/iOSBook/ch25.html#SBbarMetrics). Но этот UIToolbar не принадлежит UINavigationController, поэтому с его ростом автоматически не происходит. Тебе решать.

2

Это связано с тем, что вы создаете рамку toolBar, но не устанавливаете ее снова при повороте представления. Вам необходимо проверить, когда экран повернут с помощью [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resize) name:UIDeviceOrientationDidChangeNotification object:nil];

, а затем в вашем методе -(void)resize; необходимо изменить размер панели инструментов в новом окне.