Как контролировать авторазмер объекта без ИБ? - PullRequest
2 голосов
/ 25 ноября 2011
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{

    return YES;

}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {

    [self positionViews];  

}


-(void)positionViews {

    UIInterfaceOrientation destOrientation = self.interfaceOrientation;
    if (destOrientation == UIInterfaceOrientationPortrait ||
        destOrientation == UIInterfaceOrientationPortraitUpsideDown) {

        [bLabel setFrame:CGRectMake(255, 10, 270, 60)];

    } else { 


        [bLabel setFrame:CGRectMake(377, 10, 270, 60)];

    }   
}

bLabel - это объект Cutomed.

Когда Ipad (устройство) вращается, bLable поворачивается.Но появляются временные лаги.Таким образом, вращательное движение не является плавным.

В чем ошибки моего кода?Как естественным образом контролировать авторазмер объекта без ИБ?

Подскажите, пожалуйста, свой совет.Спасибо!!!

enter image description here

Ответы [ 2 ]

6 голосов
/ 25 ноября 2011

Свойство, которое вы ищете в представлении, является autoresizingMask. Установите это так же, как в IB. Вот доступные значения:

UIViewAutoresizing
Specifies how a view is automatically resized.

enum {
   UIViewAutoresizingNone                 = 0,
   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
   UIViewAutoresizingFlexibleWidth        = 1 << 1,
   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
   UIViewAutoresizingFlexibleHeight       = 1 << 4,
   UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};

Например, если вы хотите гибкую ширину и высоту с фиксированными полями, вы должны сделать:

[myView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoResizingFlexibleWidth;][1]
2 голосов
/ 25 ноября 2011

Вы можете:

  1. установить autoresizingMask вашего UIView, если он может быть автоматически изменен для вас.

    bLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
    
  2. Еслирасположение между двумя устройствами ориентация слишком различна, вы также можете изменить свои представления в методе UIViewController willAnimateRotationToInterfaceOrientation:duration:, который вызывается во время анимации вращения, вместо использования didRotateFromInterfaceOrientation:, который называется ПОСЛЕ транзакции анимации.

Любые изменения, которые вы вызываете для анимируемых свойств ваших представлений (рамка, границы, центр, преобразование, альфа, backgroundColor, contentStretch) из willAnimateRotationToInterfaceOrientation:duration: также будут анимированы во время вращения.

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