Я пытаюсь сделать следующее:
альтернативный текст http://img101.imageshack.us/img101/7396/33959221.png
Мне нужно сделать много пользовательских вещей, поэтому я все подклассирую.
альтернативный текст http://img248.imageshack.us/img248/4201/49422483.png
У меня проблемы с авторазмером и позиционированием. Например, UIToolBar не в правильном положении.
Итак, вот вопрос:
Если вы не используете UITableViewController или любой другой контроллер, который позаботится обо всем позиционировании и размере, то вам придется сделать это самостоятельно.
Может кто-нибудь сказать мне, как это работает? Что мне нужно понять?
---- ОБНОВЛЕНИЕ:
Мои собственные цели на самом деле не так важны, так как мой вопрос на самом деле о другом. Но хорошо. Таким образом, все «элементы», такие как TableView, панель инструментов и TabBar, будут иметь собственные фоны и использовать пользовательские кнопки. TableView будет GroupedStyle, и группы могут быть свернуты.
Мой вопрос заключается в том, как мне структурировать мой код, особенно в отношении позиционирования и автоматического изменения размера, чтобы добиться того, что вы видите на рисунке №1.
Вот как это устроено сейчас:
Application Delegate:
- (void) loadView {
RootViewController *rootView = [[RootViewController alloc] init];
[window addSubview:rootView.view];
[window makeKeyAndVisible];
RootViewController:
- (void) loadView {
self.theView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.theView.autoresizesSubviews = YES;
self.theView.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
self.view = self.theView;
ChildViewController *childView = [[ChildViewController alloc] init];
[self.view addSubview:childView.view];
ChildViewController:
- (void) loadView {
self.theView = [[UIView alloc] init];
self.view = self.theView;
}
- (void) viewDidLoad {
self.view.frame = [[UIScreen mainScreen] bounds];
CGRect toolbarBounds = self.theToolbar.bounds;
CGRect viewBounds = self.view.bounds;
CGRect tableViewBounds = CGRectMake(0, CGRectGetHeight(toolbarBounds), CGRectGetWidth(viewBounds), CGRectGetHeight(viewBounds) - CGRectGetHeight(toolbarBounds));
self.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
self.theTableView = [[MyTableView alloc] initWithFrame:tableViewBounds
style:UITableViewStyleGrouped
parent:self];
[self.view addSubview:self.theToolbar];
[self.view addSubview:self.theTableView];
}
MyToolBar:
- (id)initWithParent:(id)theParent {
if ((self = [self init])) {
self.parent = theParent;
CGRect rectArea = CGRectMake(0, 0, CGRectGetWidth([[[self parent] view] bounds]), 44);
[self setFrame:rectArea];
self.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[self loadButtons];
}
return self;
}
Так вот как позиционирование сейчас структурировано (грязно). Это на самом деле работает, НО У меня есть ModalView, который обрабатывается ChildViewController. Когда у меня есть iPad в книжной ориентации, я выскакиваю модальное изображение и отклоняю его, тогда все работает. Но когда я делаю то же самое в альбомном виде, он поворачивает дырочный вид ... ChildViewController на 90 градусов при отклонении модального вида. Очень странно. Когда я непосредственно загружаю ChildViewController в свой AppDelegate, то снова все работает нормально.