2013-04-19 1 views
1

Я сделал обычай UIView с двумя текстовыми надписями и двумя кнопками. Он полностью работоспособен, когда он создан, но теперь я пытаюсь переместить его, когда экран вращается (т. Е. От портрета к пейзажу).Рамка UIView корректно обновляется при изменении ориентации

Несмотря на то, что элементы пользовательского интерфейса, кажется, правильно перемещены, фактический кадр UIView заканчивается тем, что делает странные вещи, например, превращается в прямоугольник, когда он был первоначально квадратом и устанавливается на квадрат, но с разными x, y позиций.

Как я видел это, установив мои UIView «цвета фона S черный и наблюдать, что мое фоновое изображение было втягивается, где я ожидал бы вид, который можно сделать, но UIView» фон s становится другой формой и обращается в неправильном месте.

Вот мой код:

- (void) moveControls 
{ 
    CGRect frame; 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    switch (orientation) 
    { 
     case UIDeviceOrientationPortrait: 
     case UIDeviceOrientationPortraitUpsideDown: 
      frame = CGRectMake(0, 120, 320, 320); 
      break; 
     case UIDeviceOrientationLandscapeLeft: 
     case UIDeviceOrientationLandscapeRight: 
      frame = CGRectMake(120, 0, 320, 320); 
      break; 
     case UIDeviceOrientationFaceDown: 
     case UIDeviceOrientationFaceUp: 
     case UIDeviceOrientationUnknown: 
      return; 
    } 

    [self setFrame:frame]; 

    backgroundImage.frame = CGRectMake(0,0, frame.size.width, frame.size.height); 
    titleLabel.frame = CGRectMake(0,50,frame.size.width,frame.size.height/2); 
    titleLabel.numberOfLines = 0; 
    titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    textLabel.frame = CGRectMake(0,frame.size.height/3,frame.size.width,frame.size.height/3); 
    doneButton.frame = CGRectMake(frame.size.width - 154, frame.size.height - 90, 100, 34); 
    tellButton.frame =CGRectMake(54, frame.size.height - 90, 100, 34); 
} 

ответ

4

ли на самом деле не ответить на все вопросы, но исправляет проблему: ios: UIView's width and height after changing orientations is inaccurate?

view.center = view.superview.center; 
view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 
0

Использование:

- (void) moveControls 
{ 
    CGRect frame; 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    if (UIDeviceOrientationIsLandscape(orientation)) 
     frame = CGRectMake(120, 0, 320, 320); 
    else 
     frame = CGRectMake(0, 120, 320, 320); 



    [self setFrame:frame]; 

    backgroundImage.frame = CGRectMake(0,0, frame.size.width, frame.size.height); 
    titleLabel.frame = CGRectMake(0,50,frame.size.width,frame.size.height/2); 
    titleLabel.numberOfLines = 0; 
    titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    textLabel.frame = CGRectMake(0,frame.size.height/3,frame.size.width,frame.size.height/3); 
    doneButton.frame = CGRectMake(frame.size.width - 154, frame.size.height - 90, 100, 34); 
    tellButton.frame =CGRectMake(54, frame.size.height - 90, 100, 34); 
} 
+0

спасибо, но все еще то же самое. :( –