Изменение изображения UIImagView, когда iPad меняет ориентацию

Я использую следующий код для изменения изображения 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 ответ

Например, вы можете использовать два представления с содержимым и реализовать 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: где вы показываете другой.

Другие вопросы по тегам