1

我有一个显示图像的应用程序。我的UIImageView.

我想要做的是为图像视图设置一个大小 - 称之为 100x100。

  • 如果将总体尺寸小于 100x100 的图像放入图像视图中,我希望图像视图使图像居中。
  • 如果图像总体上大于视图,例如 200x300,那么我希望图像视图将图像居中并按比例缩小,直到它刚好适合图像视图的范围。

有没有办法在普通的 UIImageView 中做到这一点?我需要在某处施展魔法吗?

4

3 回答 3

2

您可以使用普通的 UIImage 视图来执行此操作。对于较大的图像,您希望在 IB 中将图像视图的 Mode 设置为 Aspect Fit 或 Scale To Fill(取决于您是否希望纵横比保持不变),对于较小的图像,将其设置为 Center。

您可以使用 imageView 的 contentMode 属性在代码中执行相同的操作。

于 2013-04-29T00:42:42.927 回答
1

这个答案最终帮助了我。它有这个代码:

- (CGSize) aspectScaledImageSizeForImageView:(UIImageView *)iv image:(UIImage *)im {

     float x,y;
     float a,b;
     x = iv.frame.size.width;
     y = iv.frame.size.height;
     a = im.size.width;
     b = im.size.height;

     if ( x == a && y == b ) {           // image fits exactly, no scaling required
         // return iv.frame.size;
     }
     else if ( x > a && y > b ) {         // image fits completely within the imageview frame
         if ( x-a > y-b ) {              // image height is limiting factor, scale by height
             a = y/b * a;
             b = y;
         } else {
             b = x/a * b;                // image width is limiting factor, scale by width
             a = x;
         }
     } 
     else if ( x < a && y < b ) {        // image is wider and taller than image view
         if ( a - x > b - y ) {          // height is limiting factor, scale by height
             a = y/b * a;
             b = y;
         } else {                        // width is limiting factor, scale by width
             b = x/a * b;
             a = x;
         }
     }
    else if ( x < a && y > b ) {        // image is wider than view, scale by width
        b = x/a * b;
        a = x;
    }
    else if ( x > a && y < b ) {        // image is taller than view, scale by height
        a = y/b * a;
        b = y;
    }
    else if ( x == a ) {
    a = y/b * a;
    b = y;
    } else if ( y == b ) {
        b = x/a * b;
        a = x;
    }
    return CGSizeMake(a,b);
}
于 2013-04-29T03:22:47.420 回答
1

如果图像较小,则将 UIImageView 添加到新的透明视图并将其居中放置在该视图中。如果更大,则决定如何调整视图大小(查看 UIView 中的调整大小选项),并仅使用该 UIImageView。

于 2013-04-29T00:38:21.977 回答