Я создал подкласс UIViewController и понял, что реализация -loadView по умолчанию в UIViewController будет игнорировать мои настройки размера кадра странным образом.Почему мои контроллеры просмотра не квадратичны?
Чтобы упростить это и убедиться, что это действительно не ошибка моего кода, я сделал чистый тест с простым экземпляром UIViewController напрямую, вместо того, чтобы создавать подкласс. Результат тот же. Я пытаюсь сделать точно квадратный вид 320 х 320, но появляется вид как 320 х 200.
iPhone OS 3.0, пожалуйста, проверьте это:
UIViewController *ts = [[UIViewController alloc] initWithNibName:nil bundle:nil];
ts.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, 320.0f);
ts.view.backgroundColor = [UIColor cyanColor];
[self.view addSubview:ts.view];
, как вы можете видеть, я это делаю :
1) Создать экземпляр UIViewController
2) Установить рамку зрения квадратичной размерности 320 х 320
3) придать ему цвет, так что я могу ей ee it
4) Добавил его в качестве подсмотра.
Теперь часть, что еще более странно: Когда я делаю свою собственную реализацию -loadView, то есть, если я ставлю этот код там, как это:
- (void)loadView {
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 320.0f)];
v.backgroundColor = [UIColor cyanColor];
self.view = v;
[v release];
}
, то она выглядит.
Теперь подумайте об этом: В первом примере я делаю практически то же самое, только чтобы я разрешил UIViewController создавать представление самостоятельно, а затем передать его, чтобы изменить его. Правильно?
Так почему же я получаю эту странную ошибку? Прямо сейчас я не вижу другого способа возиться так, чтобы исправить это неправильное поведение. Я не активировал ничего подобного clipToBounds, и нет другого кода, касающегося этого.
Apple отклонит мое приложение, если вручную изменю размер представления контроллера вида? – dontWatchMyProfile
@mystify: Нет. Просто для вас сложно программировать, потому что диспетчер представлений может изменить размер представления каким-то неизвестным способом. – kennytm