我有一个显示图像的应用程序。我的UIImageView
.
我想要做的是为图像视图设置一个大小 - 称之为 100x100。
- 如果将总体尺寸小于 100x100 的图像放入图像视图中,我希望图像视图使图像居中。
- 如果图像总体上大于视图,例如 200x300,那么我希望图像视图将图像居中并按比例缩小,直到它刚好适合图像视图的范围。
有没有办法在普通的 UIImageView 中做到这一点?我需要在某处施展魔法吗?
我有一个显示图像的应用程序。我的UIImageView
.
我想要做的是为图像视图设置一个大小 - 称之为 100x100。
有没有办法在普通的 UIImageView 中做到这一点?我需要在某处施展魔法吗?
您可以使用普通的 UIImage 视图来执行此操作。对于较大的图像,您希望在 IB 中将图像视图的 Mode 设置为 Aspect Fit 或 Scale To Fill(取决于您是否希望纵横比保持不变),对于较小的图像,将其设置为 Center。
您可以使用 imageView 的 contentMode 属性在代码中执行相同的操作。
这个答案最终帮助了我。它有这个代码:
- (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);
}
如果图像较小,则将 UIImageView 添加到新的透明视图并将其居中放置在该视图中。如果更大,则决定如何调整视图大小(查看 UIView 中的调整大小选项),并仅使用该 UIImageView。