Изменение изображения UIImagView, когда iPad меняет ориентацию - PullRequest
0 голосов
/ 13 ноября 2011

Я использую следующий код для изменения изображения UIImageView при изменении ориентации iPad

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{
if((self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (self.interfaceOrientation == UIDeviceOrientationLandscapeRight))
{
    self.background=self.background_D;
    self.backgroundImage.backgroundColor = [UIColor colorWithPatternImage:self.background];
} 
else  if((self.interfaceOrientation == UIDeviceOrientationPortrait) || (self.interfaceOrientation == UIDeviceOrientationPortraitUpsideDown))
{
    self.background=self.background_P;
    self.backgroundImage.backgroundColor = [UIColor colorWithPatternImage:self.background];
} 
}

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

Sumit

1 Ответ

0 голосов
/ 13 ноября 2011

Например, вы можете использовать два представления с содержимым и реализовать willRotateToInterfaceOrientation: и поместить анимацию туда, где вы затушевываете один вид, а другой - внутрь. Если вы правильно установите время, ваш переход должен быть плавным исделано, когда обмен ориентацией сделан.Для анимации вы используете либо beginAnimations: и связанные методы, либо в iOS 4 и выше [UIView animateWithDuration:delay:options:animations:completion:].http://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorial - это начало анимации.

Еще лучшим способом было бы реализовать willAnimateRotationToInterfaceOrientation:duration:, который уже вызывается внутри блока анимации.Здесь вам нужно только перенастроить альфа-значения ваших блоков, а анимация сделает все остальное.Обратите внимание, что в качестве альтернативы вы могли бы даже реализовать willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:, где вы могли бы скрыть видимое изображение, и willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:, где вы показываете другое.

...