如何在Swift中设置图像的宽度和高度

use*_*693 29 ios swift

新建SwiftiOS编程一般.我无法弄清楚如何设置图像的宽度和高度.
例如,

  let backgroundImage = UIImage(named: "background.png")
Run Code Online (Sandbox Code Playgroud)

谢谢

iPa*_*tel 28

我的建议是.

您应该设置大小而不是设置图像大小,UIImageView然后将此图像放在其上,这样,图像的大小将根据您的要求显示.

这样的,

var imageView = UIImageView(frame: CGRectMake(100, 150, 150, 150)); // set as you want
var image = UIImage(named: "myImage.png");
imageView.image = image;
self.view.addSubview(imageView);
Run Code Online (Sandbox Code Playgroud)

  • 如果您的 imageView 已经声明并且具有宽度和高度限制怎么办?那你怎么改变它呢? (2认同)
  • imageView.frame = CGRect(x:100,y:150,width:150,height:150) (2认同)

Yan*_*eph 16

你有这段代码,这段代码设置宽度和高度并保存相同的位置.

/**
Resize UIImageView
:param: UImage
:param: new size CGSize
:return: new UImage rezised
*/
    func imageResize (#image:UIImage, sizeChange:CGSize)-> UIImage{

        let hasAlpha = true
        let scale: CGFloat = 0.0 // Use scale factor of main screen

        UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale)
        image.drawInRect(CGRect(origin: CGPointZero, size: sizeChange))

        let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
        return scaledImage
    }

     let size = CGSizeMake(100, 150)

    myImageView.image! = imageResize(myImageView.image!,sizeChange: size)
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad中工作或刷新"reloadInputViews()"你的UIImageView ;-)

**

编辑

**

嗨创建这个扩展,如果你想.

创建文件Extends.Swift添加此代码(在您想要更改高度的位置添加导入基础)

/**
    Extension UIView
*/
extension UIView {
    /**
    Set x Position

    :param: x CGFloat
    */
    func setX(#x:CGFloat) {
        var frame:CGRect = self.frame
        frame.origin.x = x
        self.frame = frame
    }
    /**
    Set y Position

    :param: y CGFloat
    */
    func setY(#y:CGFloat) {
        var frame:CGRect = self.frame
        frame.origin.y = y
        self.frame = frame
    }
    /**
    Set Width

    :param: width CGFloat
    */
    func setWidth(#width:CGFloat) {
        var frame:CGRect = self.frame
        frame.size.width = width
        self.frame = frame
    }
    /**
    Set Height

    :param: height CGFloat
    */
    func setHeight(#height:CGFloat) {
        var frame:CGRect = self.frame
        frame.size.height = height
        self.frame = frame
    }
}
Run Code Online (Sandbox Code Playgroud)

For Use(继承UIView)

inheritsOfUIView.setHeight(height: 100)
button.setHeight(height: 100)
view.setHeight(height: 100)
Run Code Online (Sandbox Code Playgroud)


ode*_*ens 16

Swift 3.0版本(来自@YannickSteph)

extension UIImage {

    func imageResize (sizeChange:CGSize)-> UIImage{

        let hasAlpha = true
        let scale: CGFloat = 0.0 // Use scale factor of main screen

        UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale)
        self.draw(in: CGRect(origin: CGPoint.zero, size: sizeChange))

        let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
        return scaledImage!
    }

}
Run Code Online (Sandbox Code Playgroud)


Ash*_*rat 7

如果你想保持宽高比,这里是Swift 3的扩展方法:

import UIKit

extension UIImage {

    func resize(maxWidthHeight : Double)-> UIImage? {

        let actualHeight = Double(size.height)
        let actualWidth = Double(size.width)
        var maxWidth = 0.0
        var maxHeight = 0.0

        if actualWidth > actualHeight {
            maxWidth = maxWidthHeight
            let per = (100.0 * maxWidthHeight / actualWidth)
            maxHeight = (actualHeight * per) / 100.0
        }else{
            maxHeight = maxWidthHeight
            let per = (100.0 * maxWidthHeight / actualHeight)
            maxWidth = (actualWidth * per) / 100.0
        }

        let hasAlpha = true
        let scale: CGFloat = 0.0

        UIGraphicsBeginImageContextWithOptions(CGSize(width: maxWidth, height: maxHeight), !hasAlpha, scale)
        self.draw(in: CGRect(origin: .zero, size: CGSize(width: maxWidth, height: maxHeight)))

        let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
        return scaledImage
    }

}
Run Code Online (Sandbox Code Playgroud)