2012-01-24 3 views
0

У меня есть UIView, который я хотел бы выровнять чуть выше UITabBar как в портретной, так и в альбомной ориентации. Я хотел бы сделать это программно.Позиция UIView над панелью вкладок в любой ориентации программно

Это все у меня в UIView подкласса, IPChatTextView:

/* Initialization */ 
- (id)init 
{ 
    if (self = [super init]) 
    { 
     // Set frame 
     self.frame = CGRectMake(0, 0, 320, 40); 

     // Create background 
     UIEdgeInsets insetsBackground = UIEdgeInsetsMake(20, 50, 19, 82); 
     UIImage *imageBackground = [[UIImage imageNamed:@"ChatTextView_Background.png"] resizableImageWithCapInsets:insetsBackground]; 
     UIImageView *imageViewBackground = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)]; 
     imageViewBackground.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
     imageViewBackground.image = imageBackground; 

     // Add subviews 
     [self addSubview:imageViewBackground]; 
    } 

    return self; 
} 

Изображение вид imageViewBackground должен заполнить весь UIView и поэтому я поставил это маска для автоматического изменения UIViewAutoresizingFlexibleWidth. Это прекрасно работает.

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

self.chatTextView = [[IPChatTextView alloc] init]; 
self.chatTextView.frame = CGRectMake(0, 327, 320, 40); 
self.chatTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 
[self.view addSubview:self.chatTextView]; 

Я попытался добавить UIView в Interface Builder и установить это, как маску автоматического изменения в изображении ниже, и она прекрасно работает.

Autoresizing in Interface Builder

Я подумал, что, когда я хочу иметь такие же, как и автоматическое изменение изображение выше, я хотел бы сделать это программно, как приведенный ниже код, но он не дает мне тот же результат. Вместо этого он расположен примерно на 2/3 сверху, что кажется странным, когда я устанавливаю y-позицию self.chatTextView на 327, которая находится чуть выше панели вкладок.

self.chatTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 

Кто-нибудь знает, как я должен установить свою маску, когда автоматического изменения я хочу, чтобы вид должен быть расположен над панелью вкладок в книжной и альбомной ориентации?

EDIT:

Если изменить маску автоматического изменения включить UIViewAutoresizingMaskFlexibleBottomMargin вместо UIViewAutoresizingMaskFlexibleTopMargin, вид выровнен над панелью вкладок в портретном режиме, но вышел из экрана в ландшафтном режиме.

ответ

0

В конце концов я позиционировал его программно, когда было обнаружено вращение.