UIButton 아이콘을 지원하는 다크 모드
배경
어두운 모드를 지원할 때 단추의 TextColor만 바꾸면 이렇게 됩니다🤯
디자이너도 바쁜가 봐요. 버튼에 설정된 단색 아이콘이라면 코드로 색을 바꾸는 게 편하겠죠...?
따라서 UIButton을 위한 사용자 정의 클래스를 만들기로 했습니다.
해보다
이것은 이번에 한 것이다.
버튼 아이콘과 텍스트를 다른 색으로 설정하고 싶은 사람에게 적합합니다.
사용자 정의 클래스 준비
먼저 @IBInspectable
에서는 스토리보드에서 색상을 설정할 수 있습니다.
그리고 화면을 표시하는 도중에 모드를 전환할 때 draw()
색상을 변경합니다.
겸사겸사 하이라이트 색상도 설정해 주세요.
class IconButton: UIButton {
@IBInspectable var iconColor: UIColor?
override func draw(_ rect: CGRect) {
super.draw(rect)
self.setTitleColor(self.currentTitleColor.withAlphaComponent(0.5), for: .highlighted)
if let image = self.image(for: .normal), let iconColor = self.iconColor {
self.setImage(image.tint(color: iconColor), for: .normal)
self.setImage(image.tint(color: iconColor.withAlphaComponent(0.5)), for: .highlighted)
}
}
}
extension UIImage {
func tint(color: UIColor) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(self.size, false, 0)
color.setFill()
let drawRect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
UIRectFill(drawRect)
self.draw(in: drawRect, blendMode: .destinationIn, alpha: 1)
let tintedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return tintedImage
}
}
스토리지 보드에서 설정
단추의 사용자 정의 클래스에서 방금 만든 클래스를 설정합니다.
iconColor의 이미지 색상을 설정합니다(암흑 모드는 지원됨).
완성
쓰기 모드
암흑 모드
하이라이터는 이런 느낌이에요.
완성👏
사실...
SF Symbols를 사용하면 어두운 패턴에 쉽게 대처할 수 있을 것 같고, 가능하다면 그곳을 이용하는 것이 좋다.
https://developer.apple.com/design/human-interface-guidelines/sf-symbols/overview/
Reference
이 문제에 관하여(UIButton 아이콘을 지원하는 다크 모드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/myammm/items/a45a91c524af47dba0f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이것은 이번에 한 것이다.
버튼 아이콘과 텍스트를 다른 색으로 설정하고 싶은 사람에게 적합합니다.
사용자 정의 클래스 준비
먼저
@IBInspectable
에서는 스토리보드에서 색상을 설정할 수 있습니다.그리고 화면을 표시하는 도중에 모드를 전환할 때
draw()
색상을 변경합니다.겸사겸사 하이라이트 색상도 설정해 주세요.
class IconButton: UIButton {
@IBInspectable var iconColor: UIColor?
override func draw(_ rect: CGRect) {
super.draw(rect)
self.setTitleColor(self.currentTitleColor.withAlphaComponent(0.5), for: .highlighted)
if let image = self.image(for: .normal), let iconColor = self.iconColor {
self.setImage(image.tint(color: iconColor), for: .normal)
self.setImage(image.tint(color: iconColor.withAlphaComponent(0.5)), for: .highlighted)
}
}
}
extension UIImage {
func tint(color: UIColor) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(self.size, false, 0)
color.setFill()
let drawRect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
UIRectFill(drawRect)
self.draw(in: drawRect, blendMode: .destinationIn, alpha: 1)
let tintedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return tintedImage
}
}
스토리지 보드에서 설정
단추의 사용자 정의 클래스에서 방금 만든 클래스를 설정합니다.
iconColor의 이미지 색상을 설정합니다(암흑 모드는 지원됨).
완성
쓰기 모드
암흑 모드
하이라이터는 이런 느낌이에요.
완성👏
사실...
SF Symbols를 사용하면 어두운 패턴에 쉽게 대처할 수 있을 것 같고, 가능하다면 그곳을 이용하는 것이 좋다.
https://developer.apple.com/design/human-interface-guidelines/sf-symbols/overview/
Reference
이 문제에 관하여(UIButton 아이콘을 지원하는 다크 모드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/myammm/items/a45a91c524af47dba0f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SF Symbols를 사용하면 어두운 패턴에 쉽게 대처할 수 있을 것 같고, 가능하다면 그곳을 이용하는 것이 좋다.
https://developer.apple.com/design/human-interface-guidelines/sf-symbols/overview/
Reference
이 문제에 관하여(UIButton 아이콘을 지원하는 다크 모드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/myammm/items/a45a91c524af47dba0f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)