Размер UIImageView внезапно меняется после установки нового изображения

#ios #uiimageview

#iOS #uiimageview

Вопрос:

У меня проблема в том, что я не могу найти ошибки по названию. И я так много раз искал похожие или связанные вопросы, которые не могу решить.

Я создаю приложение, которое может изменять изображение UIImageView с помощью кнопки. все в порядке, пока я не использую другую кнопку для изменения размера ImageView (с UIView animateWithDuration CGAffineTransformMakeRotation помощью), а затем использую эту кнопку для изменения изображения.

странный вывод без каких-либо ошибок! размер изображения изменится обратно, а положение переместится в другие места.

Извините за мой плохой английский.

с графикой,

  1. У меня есть этот вид [вид без изменения размера] [1]
  2. Я использую animateWithDuration CGAffineTransformMakeRotation изменение размера и ориентации, чтобы сделать вид полноэкранным, как это [вид с измененным размером] [2]
  3. Затем я меняю это изображение этого вида на imageView.image = newImage(UIImage)
  4. Однако вид меняется на этот [странный вид] [3] либо размер, либо положение изменяются!

Но ничего не произойдет, если я изменю изображение на шаге 1 (без ориентации и установки рамки).

Пожалуйста, помогите, я не могу найти ошибки, потому что есть только одно место, которое изменяет размер и ориентацию представления.

Интересно , есть ли что -то UIImage , что повлияло бы UIImageView на это. Но я не могу найти ответ.

(фотографии внизу)

это код для поворота изображения ivew, если уже есть установленное изображение, после поворота изображение также в порядке, но проблема возникает после поворота, а затем установите новое изображение в виде изображения

 -(void)transformToDirection:(NSInteger)dir
{
rotation = M_PI_2;
CGFloat screenW = [[UIScreen mainScreen] bounds].size.width;
CGFloat screenH = [[UIScreen mainScreen] bounds].size.height;
CGRect portraitFrame = _imageVIew.frame;
CGRect landscapeFrame = CGRectMake(0, 0, screenW, screenH);

    switch (dir) {
        case UIInterfaceOrientationPortrait:
        {
            [UIView animateWithDuration:1 delay:0 options:0 animations:^{
                _imageVIew.transform = CGAffineTransformMakeRotation(3/4 * rotation);
                [_imageVIew setFrame:portraitFrame];
            }completion:^(BOOL finished){
                isFullScreen = false;
            }];
        }
            break;
        case UIInterfaceOrientationLandscapeRight:
        {
            [UIView animateWithDuration:1 delay:0 options:0 animations:^{
                _imageVIew.transform = CGAffineTransformMakeRotation(rotation);
                [_imageVIew setFrame:landscapeFrame];

            }completion:^(BOOL finished){
                isFullScreen = true;
            }];
        }
            break;
        case UIInterfaceOrientationLandscapeLeft:
        {
            [UIView animateWithDuration:TIME_ANIMATE_FULLSCREEN delay:0 options:0 animations:^{
                _imageVIew.transform = CGAffineTransformMakeRotation(-rotation);
                [_imageVIew setFrame:landscapeFrame];
            }completion:^(BOOL finished){
                isFullScreen = true;
            }];
        }
            break;
        default:
            break;
    }
}
 

это изображение набора изображений (все новые изображения имеют одинаковый размер), которое вызывается кнопкой.

 dispatch_async(dispatch_get_main_queue(), ^{
        if (loadedimage) {
            self.imageVIew.image = loadedimage;
        } else {
            self.PBMainImageVIew.image = nil;
            dlog(@"request image failed");
        }
    });
 

Комментарии:

1.[1]: i.stack.imgur.com/PQvTf.png [2]: i.stack.imgur.com/nH3cn.png [3]: i.stack.imgur.com/L8yBA.png

2. Здравствуйте, эти 2 изображения (изображение 1 и новое изображение) имеют одинаковое соотношение размеров?

3. да, они имеют одинаковое соотношение размеров, @BashirSidani

4. итак, вы поворачиваете изображение на 90 градусов и делаете его таким же большим, как экран, верно? также вы хотите, чтобы новое изображение было повернуто вправо?

5. да, для вашего 1-го вопроса, но я установил новое изображение в повернутом виде изображения, я не поворачиваю изображение, а просматриваю только 2-й вопрос да, я хочу, чтобы новое изображение также было повернуто в том же виде изображения @BashirSidani