在容器上缩放iOS应用程序图像

时间:2014-08-04 09:36:27

标签: javascript html ios css

如何在IOS应用程序中制作从高度和宽度缩放的容器中加载的照片?在我的应用程序中,一些照片被拉伸(从一开始就是第二张),如何修复它?

screenshot

3 个答案:

答案 0 :(得分:2)

使用CSS的一种技术是将图像指定为元素的背景,然后相应地缩放:

.imgContainer{
  background-image:url(myImage.jpg); /* <--- add the image as the background */
  background-size:cover; /* <--- scale the image maintaining proportions */
  background-position:center center; /* <--- center the image */
}

More on background-size from MDN

  

background-size CSS属性指定背景的大小   图片。图像的大小可以完全约束或仅限制   部分是为了保持其内在比例。

     

封面:此关键字指定背景图片应为   缩小到尽可能小,同时确保其尺寸   大于或等于相应的尺寸   背景定位区。

..和background-position

答案 1 :(得分:2)

而不是在图片上使用width:100%height:100%,请尝试使用max-width:100%max-height:100%。这样,您的图像将保持其比例,但可能会留下空白。

为避免出现空格,您可以使用background-image:url('url_of_image')background-size:cover在CSS中显示图片。通过这种方式,图像将填充div,保持它们的比例,但可能更大。

答案 2 :(得分:1)

我认为你的问题是图像的实际尺寸,可能不是实际的正方形或矩形。在这种情况下,您可能想要使用这两种方法:

    1) yourImageView.contentMode = UIViewContentModeScaleAspectFit;
//That keeps an entire image in frame but cut borders

    2) yourImageView.contentMode = UIViewContentModeScaleAspectFill;
//That fills whole frame with image but cut off sides

为了在帧中正确调整图像大小,我建议使用类别:

- (UIImage*)resizedImageWithBounds:(CGSize)bounds;

- (UIImage*)resizedImageWithBounds:(CGSize)bounds{

// Based on code by Trevor Harmon
    CGFloat horizontalRatio = bounds.width/self.size.width;
    CGFloat verticalRatio = bounds.height/self.size.height;
    CGFloat ratio = MIN(horizontalRatio,verticalRatio);
    CGSize newSize = CGSizeMake(self.size.width*ratio, self.size.height*ratio);

    UIGraphicsBeginImageContextWithOptions(newSize, YES, 0);

    if (newSize.width >66){
        newSize.width = 66;
    }

    if (newSize.height > 66){
        newSize.height = 66;
    }
    [self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];


    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

}

在此代码中66代表图像的宽度/高度。

希望它有所帮助。