设置新图像后,UIImageView大小突然改变

时间:2016-10-17 06:28:45

标签: ios uiimageview

我遇到一个问题,我无法找到标题错误。而且我已经多次搜索过类似或相关的问题,这些问题无法解决。

我正在构建一个可以使用按钮更改A UIImageView的图像的应用程序。一切都很好,直到我使用另一个按钮来改变imageView的大小(使用UIView animateWithDuration + CGAffineTransformMakeRotation),然后使用该按钮更改图像。

奇怪的输出没有错误发生!图像视图大小改变回来,位置移动到其他地方。

抱歉我的英语很差。

带图形,

  1. 我有这个观点[没有尺寸改变视图] [1]
  2. 我使用animateWithDuration + CGAffineTransformMakeRotation更改尺寸&方向,使视图全屏像[尺寸更改视图] [2]
  3. 然后我按imageView.image = newImage(UIImage)
  4. 更改此视图的此图片
  5. 但是,视图更改为[奇怪视图] [3]的大小或位置都会改变!
  6. 但是,如果我在步骤1更改图像没有任何内容(没有方向和设置框架)

    请帮忙,我找不到错误,因为只有一个地方可以改变视图的大小和方向。

    我想知道UIImage会影响UIImageView。但我找不到答案。

    (照片在下方)

    这是旋转图像的代码 如果已经设置了图像,旋转后图像也很好 但是问题在旋转后得到,然后将新图像设置为图像视图

    -(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");
            }
        });
    

0 个答案:

没有答案