UIButton の画像サイズを調整するにはどうすればよいですか? 私はこのように画像を設定しています:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
ただし、これにより画像がボタン全体に表示されます。画像を小さくするにはどうすればよいですか?
UIButton の画像サイズを調整するにはどうすればよいですか? 私はこのように画像を設定しています:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
ただし、これにより画像がボタン全体に表示されます。画像を小さくするにはどうすればよいですか?
あなたがやろうとしていることを正しく理解していれば、ボタンの画像の端のはめ込みで遊ぶ必要があります。何かのようなもの:
myLikesButton.imageEdgeInsets = UIEdgeInsets(top: 30, left: 30, bottom: 30, right: 30)
imageEdgeInsets
ボタンの画像を囲む四角形のプロパティ The inset または outset marginsを使用できます。
[self.btn setImageEdgeInsets:UIEdgeInsetsMake(6, 6, 6, 6)];
正の値を指定すると、そのエッジが縮小または挿入され、移動します。負の値は、そのエッジを拡張またはアウトセットします。
Swiftバージョンは次のとおりです。
myButton.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
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
)
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!
}
画像のサイズもボタンのサイズと同じだと思います。次に、画像をボタンの背景に配置します。
[myLikesButton setBackgroundImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
画像とボタンのサイズを同じにする必要があります。私のポイントを理解していただければ幸いです。