Как бороться с ориентацией фонового изображения в UIView - PullRequest
1 голос
/ 04 января 2011

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

- (void)viewDidLoad {
    [super viewDidLoad];
    UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
    self.view.backgroundColor = background;
    [background release];
}

Ответы [ 3 ]

6 голосов
/ 06 января 2011

Мне потребовалось некоторое время, чтобы понять эту концепцию. Я не хотел создавать одинаковые изображения портрета и пейзажа. Ключевым моментом здесь является то, что CGAffineTransformMakeRotation вращается из исходного состояния вашего UIImageView или любого UIView по этому вопросу. Это предполагает, что ваше фоновое изображение имеет ориентацию к нему. Например. Вы хотите, чтобы ваш UIImageView оставался на месте, в то время как другие объекты ведут себя как обычное событие изменения ориентации.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
                                duration:(NSTimeInterval)duration {

    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {  
        backgroundImage.transform = CGAffineTransformMakeRotation(M_PI / 2);
    }
    else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){
        backgroundImage.transform = CGAffineTransformMakeRotation(-M_PI / 2);
    }
    else {
        backgroundImage.transform = CGAffineTransformMakeRotation(0.0);
    }
}

- (void)viewDidLoad {
    [super viewDidLoad];

    //set the UIImageView to current UIView frame
    backgroundImage.frame = self.view.frame;
}
0 голосов
/ 04 января 2011

Вы должны сделать 2 изображения как по горизонтали, так и по вертикали, и вместо выделения вы можете использовать [...: colorWithPatternImage:...]; и установить его, когда ориентация меняется на фон вида.

СЧАСТЛИВОЕ ИКОДИРОВАНИЕ ...

0 голосов
/ 04 января 2011

Если я правильно понимаю, ваш фон создается или перезаписывается каждый раз, когда вы меняете правильную ориентацию. По умолчанию backgroundColor равно nil. Вы можете проверить это, если это ноль, тогда вы идете вперед и устанавливаете значения. Это как

if ( self.view.backgroundColor == nil){
    //set the new values here
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...