[UIKit] iOS 15.0 이상에서 UIButton 안에 있는 이미지 사이즈 조절하기

2024. 11. 15. 00:15·📱 iOS/UIKit

문제 상황

버튼에 레이아웃을 아무리 건드려도 버튼 안에 들어있는 이미지는 늘어나지 않는다..!

버튼 안에 있는 이미지 사이즈 조절하는 방법


문제 해결

개요

현재 코드는 이렇게 버튼에만 레이아웃이 걸려있다.

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가지 정도 알아냈다.

  1. UIButton의 ContentEdgeInsets
  2. UIButton의 imageEdgeInsets
  3. button.imageView에 대해 오토레이아웃 추가하기
  4. 이미지 자체에 사이즈를 변경해서 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로 이미지 새로 그려서 해결해냄

참조 링크

없음

저작자표시 (새창열림)

'📱 iOS > UIKit' 카테고리의 다른 글

[UIKit] UIMenu 사용기  (1) 2024.12.10
[UIKit] CollectionViewCell 드래그 앤 드랍 구현하기  (0) 2024.12.01
[UIKit] 런타임 시점에 Constraint를 조절하여 애니메이션 구현하기  (2) 2024.11.14
[UIKit] Cell Identifier 지정할 때, 휴먼 에러를 방지하기  (0) 2024.10.06
[UIKit] TableView에서 무한 스크롤 페이지네이션 처리  (2) 2024.10.04
'📱 iOS/UIKit' 카테고리의 다른 글
  • [UIKit] UIMenu 사용기
  • [UIKit] CollectionViewCell 드래그 앤 드랍 구현하기
  • [UIKit] 런타임 시점에 Constraint를 조절하여 애니메이션 구현하기
  • [UIKit] Cell Identifier 지정할 때, 휴먼 에러를 방지하기
kyxxn
kyxxn
컴퓨터공학을 좋아하는 대학생의 공부 일기
  • kyxxn
    컴공 학부생의 공부 일기
    kyxxn
  • 전체
    오늘
    어제
    • 분류 전체보기 (156)
      • 📱 iOS (64)
        • Xcode (10)
        • Swift (17)
        • Swift Concurrency (12)
        • UIKit (21)
        • SwiftUI (0)
      • 🖥️ Computer Science (57)
        • 🏛️ Software Architecture Pa.. (2)
        • 👨🏻‍🎨 Design Pattern (3)
        • Data Structure (4)
        • Algorithm (10)
        • Computer Architecture (4)
        • Operating System (19)
        • Network (15)
      • ✍🏻 회고록 (9)
      • 🎸 기타 (25)
        • 해커톤 (1)
        • git (6)
        • 세미나 (1)
        • 책을 읽고 (1)
        • AOS, Kotlin (6)
        • Reinforcement Learning (9)
  • 블로그 메뉴

    • 링크

      • 깃허브
      • 일상 블로그
    • 공지사항

    • 인기 글

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    kyxxn
    [UIKit] iOS 15.0 이상에서 UIButton 안에 있는 이미지 사이즈 조절하기
    상단으로

    티스토리툴바