182

UIButton の画像サイズを調整するにはどうすればよいですか? 私はこのように画像を設定しています:

[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];

ただし、これにより画像がボタン全体に表示されます。画像を小さくするにはどうすればよいですか?

4

18 に答える 18

273

あなたがやろうとしていることを正しく理解していれば、ボタンの画像の端のはめ込みで遊ぶ必要があります。何かのようなもの:

myLikesButton.imageEdgeInsets = UIEdgeInsets(top: 30, left: 30, bottom: 30, right: 30)
于 2012-05-14T01:49:53.960 に答える
24

imageEdgeInsetsボタンの画像を囲む四角形のプロパティ The inset または outset marginsを使用できます。

 [self.btn setImageEdgeInsets:UIEdgeInsetsMake(6, 6, 6, 6)];

正の値を指定すると、そのエッジが縮小または挿入され、移動します。負の値は、そのエッジを拡張またはアウトセットします。

于 2013-08-16T19:18:38.363 に答える
16

Swiftバージョンは次のとおりです。

myButton.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
于 2015-11-07T08:25:43.717 に答える
7

Tim C's answerの助けを借りて、追加のパラメーターを持つ関数をUIButton使用して画像フレームを指定できるようにする Swift の使用に関する拡張機能を作成することができました.setImage()frame

extension UIButton{

    func setImage(image: UIImage?, inFrame frame: CGRect?, forState state: UIControlState){
        self.setImage(image, forState: state)

        if let frame = frame{
            self.imageEdgeInsets = UIEdgeInsets(
                top: frame.minY - self.frame.minY,
                left: frame.minX - self.frame.minX,
                bottom: self.frame.maxY - frame.maxY,
                right: self.frame.maxX - frame.maxX
            )
        }
    }

}

UIButtonこれを使用して、 のフレームを に設定しCGRectMake(0, 0, 64, 64)、その画像をのフレームで に設定したい場合myImageは、次のCGRectMake(8, 8, 48, 48)ように使用できます。

let button: UIButton = UIButton(frame: CGRectMake(0, 0, 64, 64))
button.setImage(
    myImage,
    inFrame: CGRectMake(8, 8, 48, 48),
    forState: UIControlState.Normal
)
于 2015-12-09T04:35:45.473 に答える
3

1 つの方法は、次のようなコードで UIImage のサイズを変更することです。注: このコードは高さでのみ拡大縮小しますが、関数を幅で拡大縮小するように簡単に調整できます。

let targetHeight = CGFloat(28)
let newImage = resizeImage(image: UIImage(named: "Image.png")!, targetHeight: targetHeight)
button.setImage(newImage, for: .normal)

fileprivate func resizeImage(image: UIImage, targetHeight: CGFloat) -> UIImage {
    // Get current image size
    let size = image.size

    // Compute scaled, new size
    let heightRatio = targetHeight / size.height
    let newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
    let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)

    // Create new image
    UIGraphicsBeginImageContextWithOptions(newSize, false, 0)
    image.draw(in: rect)
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    // Return new image
    return newImage!
}
于 2018-03-27T19:48:49.743 に答える
-6

画像のサイズもボタンのサイズと同じだと思います。次に、画像をボタンの背景に配置します。

[myLikesButton setBackgroundImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];

画像とボタンのサイズを同じにする必要があります。私のポイントを理解していただければ幸いです。

于 2012-05-14T05:51:32.183 に答える