-
Notifications
You must be signed in to change notification settings - Fork 1
[기술공유] iOS 15.0 이상에서 UIButton 안에 있는 이미지 사이즈 조절하기
박효준 edited this page Nov 14, 2024
·
1 revision
버튼에 레이아웃을 아무리 건드려도 버튼 안에 들어있는 이미지는 늘어나지 않는다..!
버튼 안에 있는 이미지 사이즈 조절하는 방법
현재 코드는 이렇게 버튼에만 레이아웃이 걸려있다.
private let likeButton = UIButton(type: .custom)
likeButton.setImage(.likeFill, for: .normal)
likeButton.setAnchor(
top: bookCoverView.bottomAnchor,
trailing: dropDownButton.leadingAnchor, constantTrailing: 10,
width: 40, height: 40
)
위 문제를 해결하기 위해 구글링 한 결과 4가지 정도 알아냈다.
- UIButton의 ContentEdgeInsets
- UIButton의 imageEdgeInsets
- button.imageView에 대해 오토레이아웃 추가하기
- 이미지 자체에 사이즈를 변경해서 button.setImage()메소드에 넣기
일단, 1번과 2번은 UIButtonConfiguration이 나오고부터 deprecated 됐다.
지금 블로그에 나와있는 건 대부분 deprecated 된 메소드를 쓰고 있음 ㅠ
탈락.
3번으로 할 수 있긴 한데, 언젠가 또 필요한 순간이 올 거 같아서 4번으로 결정했다.
먼저 UIImage에 확장으로 image와 size를 받는 메소드를 만든다.
import UIKit
extension UIImage {
static func resizedImage(image: UIImage, size: CGSize) -> UIImage {
let renderer = UIGraphicsImageRenderer(size: size)
return renderer.image { _ in
image.draw(in: CGRect(origin: .zero, size: size))
}
}
}
그리고 ImageRenderer를 통해 이미지를 새로 그릴 건데,
이때 사이즈를 입력받아서 내가 넣은 이미지가 해당 사이즈로 리턴되게 구현했다.
let likeImage = UIImage.resizedImage(
image: isLike ? .likeFill : .likeEmpty,
size: CGSize(width: 28, height: 28)
)
likeButton.setImage(likeImage, for: .normal)
그러면 위와같이 사용할 수 있다 !
- 버튼 안에 이미지는 사이즈를 따로 조정해줘야 한다
- UIGraphicsImageRenderer로 이미지 새로 그려서 해결해냄
없음