В настоящее время я пишу приложение UISplitViewController, и был разочарован, узнав, что изменение размера детали или основного вида запрещено. Он полностью отвечает за размер этих субкадров.
Как и UINavigationController и UITabBarController, UISplitViewController является контроллером представления «контейнер» и формирует свои подпредставления в соответствии со своими целями.
Функция self debugDumpTheFrames распечатывает кадр контроллера uisplitview и его два подкадра. Я печатаю кадры в viewDidLoad splitViewController и устанавливаю таймер для повторного вызова этой функции через 2 секунды (в течение этого времени я ничего не делаю):
[self debugDumpTheFrames];
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(debugDumpTheFrames) userInfo:nil repeats:NO];
Если мы посмотрим на вывод, то увидим, что через некоторое время после viewdidload UISplitViewController изменил кадры своих подпредставлений.
size of splitviewcontrollers view frame {{0, 0}, {748, 1024}}
size of splitviewcontrollers detail view frame {{0, 0}, {768, 1024}}
size of splitviewcontrollers master view frame {{0, 0}, {768, 1024}}
size of splitviewcontrollers view frame {{0, 0}, {748, 1024}}
size of splitviewcontrollers detail view frame {{321, 0}, {703, 748}}
size of splitviewcontrollers master view frame {{0, 0}, {320, 748}}
Где именно это происходит, я не уверен; но uisplitviewcontroller является боссом этих фреймов, и они являются частной собственностью, поэтому касание их является основанием для отказа от магазина.