Расположите UIView над панелью вкладок в любой ориентации программно - PullRequest
0 голосов
/ 24 января 2012

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

Это все, что у меня есть в моем подклассе 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 в Интерфейсном Разработчике и установить его маску автоматического изменения размера, как показано на рисунке ниже, и он отлично работает.

Autoresizing in Interface Builder

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

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

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

EDIT:

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

1 Ответ

0 голосов
/ 20 февраля 2012

Я закончил позиционировать его программно, когда было обнаружено вращение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...