0

我有一个 UIImageView,它是整个屏幕的宽度,高度是 400 像素。

我正在寻找的最终结果是每个图像都具有完全相同的宽度(屏幕宽度),并且在保持其纵横比的同时调整了高度以适应这一点。

所以如果一个图像是 400 像素宽,它需要减少到 320 像素宽,并且图像视图的高度应该调整并变得更短以保持比例。

如果图像是 240 像素宽,则需要将其宽度增加到 320 并将高度调整为 TALLER 以保持比例。

我一直在浏览许多帖子,这些帖子似乎都只是指向将内容模式设置为适合方面,但这与我所寻找的完全不同。

任何帮助都会很棒,谢谢!

4

4 回答 4

0
UIImage *originalImage = [UIImage imageNamed:@"xxx.png"];
    double width = originalImage.size.width;
    double height = originalImage.size.height;
    double apectRatio = width/height;

    //You can mention your own width like 320.0
    double newHeight = [[UIScreen mainScreen] bounds].size.width/ apectRatio;
    self.img.frame = CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, newHeight);
    self.img.center = self.view.center;
    self.img.image = originalImage;
于 2015-04-15T06:45:03.597 回答
0

所以看起来在我发布它后不久,我检查了故事板,由于某种原因,代码没有覆盖故事板。

如果我在情节提要中将其更改为 Aspect Fit,它实际上会按照应有的方式运行。

::掌心::

于 2013-10-11T20:00:35.020 回答
0

您只需在 imageview 中将内容模式属性设置为 Aspect Fit。

于 2013-10-11T20:03:01.183 回答
0
func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage {
        let size = image.size

        let widthRatio  = targetSize.width  / image.size.width
        let heightRatio = targetSize.height / image.size.height

        // Figure out what our orientation is, and use that to form the rectangle
        var newSize: CGSize
        if(widthRatio > heightRatio) {
            newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
        } else {
            newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio)
        }

        // This is the rect that we've calculated out and this is what is actually used below
        let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)

        // Actually do the resizing to the rect using the ImageContext stuff
        UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
        image.draw(in: rect)
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return newImage!
    }

现在从原始图像中获取调整大小的图像,就像我所做的那样:

let image = UIImage(named: "YOUR IMAGE NAME")
let newHeight = (image?.size.height/image?.size.width) * YOUR_UIIMAGE_VIEW_WIDTH
let newSize = CGSize(width: YOUR_UIIMAGE_VIEW_WIDTH, height: newHeight)
let newResizedImage = resizeImage(image: image, targetSize: newSize)

希望,这会有所帮助。

于 2017-05-16T10:38:42.327 回答