์ฌ์ค๋๋ก ๋งํ์๋ฉด, ์ด ์ ์์ 11์ 1์ผ ~ 11์ 3์ผ๊น์ง ์ดํ์ ๊ฑธ์ณ ๋ฐ์ํ๋ค.
๋จธ๋ฆฌ๊ฐ ์๋์๊ฐ์ ์ด๊ฑฐ ์๊ฐํ๋ค๊ฐ ๋ค๋ฅธ์์ ํ๋ค๊ฐ ํ๋ค.! ๐คฏ ์ง์ง ์ด๊ฑฐ์ฒ๋ผ ๋จธ๋ฆฌ๊ฐ ํฐ์ก์์ ;;
๐งจ 1์ฐจ ์ ์ ๋ฐ๋ฐ - button์ width๋ ์ด๋ป๊ฒ ์ค์ ํ๋๊ฑฐ๋๊ณ ;
1๏ธโฃ UIButton์ incristic? content ์ฌ์ด์ฆ๋ฅผ ๋ฐ๋ผ์ width์ hegith๊ฐ ์๋์ผ๋ก ๊ฒฐ์ ๋๋๋ฐ ์ ์ด๋ ๊ฒ ๋์ค๋๊ฑฐ์ง?
1์ฐจ ์๋
- ์ธํฐ๋ท์์ ๋ฒํผ ํฐํธ์ ๋ฒํผํฌ๊ธฐ๋ฅผ ๋ง์ถ๋ ์์ ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋๋๋ ๊ธ์ ๋ดค๋๋ฐ, ์๋ ์ฝ๋๋ฅผ ์๋ ค์ฃผ๋๋ผ๊ณ ?
self.titleLabel?.adjustsFontSizeToFitWidth = true
- ํ์ง๋ง ์ด ์ฝ๋๋, ‘์์ ํ๋ฌ๊ฐ๊ธฐ’๋ผ๋ ํฐํธ๊ฐ ์์์ ธ๋ฒ๋ฆฌ๋ฉด์ ๋ฒํผ ๋ด๋ถ๋ก๋ค์ด์๋ฒ๋ฆฐ๋ค… ใ ใทใ ใท๐ก
- width์ ๋ง์ถฐ์ font size๋ฅผ ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ ์ฝ๋๋ผ์ ๊ทธ๋ ๋ค๊ณ ํ๋ค.
adjustsFontSizeToFitWidth์ ๋ํด์ ์๊ณ ๋์ด๊ฐ์!
https://developer.apple.com/documentation/uikit/uilabel/1620546-adjustsfontsizetofitwidth
๐ width์ ๋ง๊ฒ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค.
๋ ์ด๋ธ์ด ๋ ์ด๋ธ์ ๊ฒฝ๊ณ ์ฌ๊ฐํ์ ์ ๋ชฉ ๋ฌธ์์ด์ ๋ง์ถ๊ธฐ ์ํด ํ ์คํธ์ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ์ค์ด๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ Bool๊ฐ์ด๋ค.
์ ์ ์์์ ์์ ํ ๊ทธ๋ฅ ๊ธ๊ผด์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค๊ณ ๋์์๊พธ๋!!!!!
2์ฐจ ์ง๋ฌธ - ์์ฌ๋จ๊ณ
- ๋ฒํผ์ ์ค์ ํ ๋ width๋ฅผ ๊ฐ์ ๋ก ์ฃผ๋๊ฑฐ ์๋๋๋ฉด์ ๋๋์ ์๋์๊ฒ ์ง๋ฌธ
- ๊ฐ์ ๋ก ๊ทธ๋ฅ ์ฃผ๊ณ ๋ง ์ถ์๋ค ;;
- ๋๋์ ์๋ ๋ต๋ณ์ผ๋ก๋, ๋ฒํผ์ ์ค์ ํ ๋ ์ฃผ๋ก width๋ฅผ ์ค์ ํด์ฃผ๊ฑฐ๋ leading+trailing์ ์ค์ ํฌ๊ธฐ๋ฅผ ์ฃผ์ด์ฃผ๋ ํธ์ด๋ผ๊ณ ํ๋ค!!! ํธ๋ค ์ด์ด์ด์ด ํธ๋ค ์ด์ด ๐
- ๊ผญ ํฌ๊ธฐ๋ฅผ ์ก์์ฃผ๋ ์ด์ ๋, width๊ฐ ์ ํํ์ง ์์ผ๋ฉด frame์ด ๋ช์ธ์ง ๋ชฐ๋ผ์ ๋ชจ์์ด ์์กํ์ ํฐ์น๊ฐ ์๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํ๋ค๊ณ ํ๋ค.
→ ์ค์ผ์ด ๊ทธ๋ผ ์ผ๋จ width๋ ์ก์์ค์ผํ๋๊ฑฐ ํ์ธ.
3์ฐจ - ๋๋์ด ์ง๊ฟ์ ๋ง๋ฌ๋ค
๋์๋ค๋๋ฉด์ ํด๋น ์ฝ๋ ๋ฐ๊ฒฌ. ์ด๊ฒ์ ๋ฃ์ด์ฃผ๋๊น, button ๋ด๋ถ ๊ธ์๋ค์ ๋ง์ถฐ์ button width๊ฐ ์๋์ผ๋ก ๋์ด๋๋๋ผ๊ณ !!! ๐๐๐… ๋ด๊ฐ ์ฐพ๋๊ฒ ๋ฐ๋ก ์ด๋ฐ๊ฑฐ๋ผ๊ตฟ ๐ป
self.invalidateIntrinsicContentSize()
invalidateIntrinsicContentSize()๋?
https://developer.apple.com/documentation/uikit/uiview/1622457-invalidateintrinsiccontentsize
์ฝ์ด๋ณด๋๊น, ๊ณ ์ ์ฝํ ์ธ ์ ํฌ๊ธฐ๋ฅผ ๋ฌดํจํํ๋ ์ฝ๋๋ผ๊ณ ํ๋ค. ๋ฒํผ๋ label์ด ๊ธธ์ด์ง๋ฉด ๋ง์ค์ํ๋ก ๋ผ๋ฒจ์ด ์ค์ด๋ค์๋๋ฐ, ์ด ์ฝ๋๋ฅผ ์์ฑํ๋๊น ๊ณ ์ ์ปจํ ์ธ (button)์ ํฌ๊ธฐ๋ฅผ ๋ฌดํจํ์์ผ๋ฒ๋ ค์ ๊ธ์์ ๋ง์ถฐ์ ๋ฒํผ์ ํฌ๊ธฐ๊ฐ ์ ํด์ง๋ ๊ฑฐ ๊ฐ์๋ค. ๊ทธ๋์ ํด๊ฒฐํ ํ๋ฉด์ ์๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ๋ฑ ๋ง์ถฐ์ ๋ฒํผ์ด ์ ํด์ง๋ ๊ฒ! ์ด์ ๋ ๋ด๋ถ image+label์ inset์ ๋ฃ์ด์ฃผ์ด์ ๋์์ด๋๊ฐ ์ ๋ฌํด์ค ๋ฒํผ ๋ชจ์๊ณผ ๋์ผํ๊ฒ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
๐งจ 2์ฐจ ์ ์ - ์ inset ์ ์ฉ ์๋๋๊ณ ;;
2๏ธโฃ ๋ฒ์ ์๋ฐ๋ผ์ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํ๋๋ฐ, ์ ์ ์ฉ์ด ์๋๋๊ฑฐ์ผ?
์๋๋ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ์ด๋ ๊ฒ ํ์๋ค
private func configureUI() {
self.invalidateIntrinsicContentSize()
self.titleLabel?.textAlignment = .center
self.backgroundColor = .evyBlack1
self.imageView?.contentMode = .scaleAspectFit
self.constraint(.heightAnchor, constant: Size.buttonHeigth)
// TODO: - 15๋ฒ์ ผ์์ contentinset๋ฃ์ด์ผํ๊ณ , cornerradius๋ฃ์ด์ผํจ
if #available(iOS 15.0, *) {
configuration?.preferredSymbolConfigurationForImage = Size.buttonImageSize
} else {
self.contentEdgeInsets = UIEdgeInsets(top: 8, left: 10, bottom: 8, right: 30)
}
}
๋จผ์ ๋ฒํผ์ ๋ชจ์์ ์ ๋ถ ์ก์์ค ๋ค์, configuration ์ฝ๋๋ฅด ๊ผญ ์ฌ์ฉํด์ผ๋ง ํ๋ ๊ฒฝ์ฐ๋ง ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํ์๋ค. ์๊พธ๋ง ์ํ๋ ๋ชจ์์ด ๋์ค์ง ์๊ธธ๋ print๋ฌธ๊ณผ .capsule๋ก Corner ๋ชจ์์ ๋ฐ๊ฟ์ค ๋ณด์๋ค.
private func configureUI() {
self.invalidateIntrinsicContentSize()
self.titleLabel?.textAlignment = .center
self.backgroundColor = .evyBlack1
self.imageView?.contentMode = .scaleAspectFit
self.constraint(.heightAnchor, constant: Size.buttonHeigth)
// TODO: - 15๋ฒ์ ผ์์ contentinset๋ฃ์ด์ผํ๊ณ , cornerradius๋ฃ์ด์ผํจ
if #available(iOS 15.0, *) {
configuration?.cornerStyle = .capsule
configuration?.preferredSymbolConfigurationForImage = Size.buttonImageSize
print("์ฌ๊ธธ์ง๋๊ธดํด?")
} else {
self.contentEdgeInsets = UIEdgeInsets(top: 8, left: 10, bottom: 8, right: 30)
}
}
์ด๋ ๊ฒ ํด๋ณด๋๊น, ์ผ๋จ, ์ ํจ์๋ฅผ ์ง๋๊ธดํ๋ค.. ๊ทผ๋ฐ cornerStyle์ด ๋ณํ์ง ์์๋ค. ์ฆ, ํจ์๋ฅผ ์ง๋๊ธด ํ๋๋ฐ configuration์ ์ ์ฉํ ์์ฑ๋ค์ด ์ ์ฉ๋์ง ์๊ณ ์๋ค๋ ๊ฒ์ด์ง…
๋๋์ฒด ์๊ทธ๋ด๊น????? ์ฐ์ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํ์ฉํด์ cusom UIButton์ ๋ง๋ ์ฌ๋๋ค์ ์ฐพ์๋์ฐ๋ค… ๊ตฌ๊ธ๋ง๋ ์ค๋ ฅ์ด๋ค….
๊ตฌ๊ธ๋ง ๊ฒฐ๊ณผ ์๋ ๋ธ๋ก๊ทธ์์๋, ๋ฒํผ์ ์ ์ฉ๋๋ ์์ฑ๋ค ๋ชจ๋์ ๋ถ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํตํด์ ๊ตฌํํด์ฃผ์๋ค.
์ด๋ ๊ฒ ๋ง์ด๋ค,,,,
์์ฐจ์ฐจ..? ๐ค ๋น์ฐํ configuration์ผ๋ก ์ ์ฉ๋๋ ๋ฒํผ์ configuration์ผ๋ก๋ง ์์ฑ์ด ์ ์ฉ๋ ๊ฒ์ธ๋ฐ, ๋ด๊ฐ configuration์ผ๋ก ์ฃผ์ง ์์๋ ๊ฒ์ด ๋ฌธ์ ์๋๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋๋ ์ ์ฒ๋ผ ์ฝ๋๋ฅผ ๋ฐ๊ฟ๋ณด์๋ค.
๊ทธ๋ฅ ์ผ๋ฐ ๋ฒํผ์ ์ฃผ๋ ์์ฑ๋ค๊ณผ ๋๊ฐ๊ฒ buttonConfig๋ฅผ ๋ง๋ค์ด์ configuration ์์ฑ์ ๋ด์ ๋ณ์๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ , configuration์ ์ ์ฉ์์ผ์ฃผ๋ ์ฝ๋๋, ์ผ๋ฐ ๋ฒํผ์ ์์ฑํ๋ ๋ฐฉ์๋๋ก ์ ์ฉ์์ผ์ฃผ๋ ์ฝ๋๋ฅผ ๊ฐ๊ฐ ๋ฐ๋กญ ๋ถ๊ธฐ์ฒ๋ฆฌํด์ฃผ์๋ค.
private func configureUI() {
if #available(iOS 15.0, *) {
var buttonConfig = UIButton.Configuration.filled()
buttonConfig.titleAlignment = .leading
buttonConfig.baseBackgroundColor = .evyBlack1
buttonConfig.cornerStyle = .capsule
buttonConfig.preferredSymbolConfigurationForImage = Size.buttonImageSize
buttonConfig.contentInsets = NSDirectionalEdgeInsets(top: 8, leading: 10, bottom: 8, trailing: 30)
configuration = buttonConfig
print("์ฌ๊ธธ์ง๋๊ธดํด?")
} else {
self.invalidateIntrinsicContentSize()
self.titleLabel?.textAlignment = .center
self.backgroundColor = .evyBlack1
self.imageView?.contentMode = .scaleAspectFit
self.constraint(.heightAnchor, constant: Size.buttonHeigth)
self.contentEdgeInsets = UIEdgeInsets(top: 8, left: 10, bottom: 8, right: 30)
}
}
์์ฐ ์ด๋ ๊ฒ ํ๋๊น !!! 15๋ฒ์ ์ผ๋ก ๋น๋ํ์๋ ๋ด๊ฐ ์ํ๋ ๋ฐฉ์์ผ๋ก ์ถ๋ ฅ์ด ๋๋ค!!!!
์ ์ฌ์ง์ด 15๋ฒ์ ์ด์์ผ ๊ฒฝ์ฐ์ด๊ณ , ์๋ ์ฌ์ง์ด 15๋ฒ์ ๋ฏธ๋ง์ผ ๊ฒฝ์ฐ์ด๋ค.
์ฝ๋๋ฅผ๋ณด๋ฉด, 15๋ฒ์ ์ด์์ผ ๊ฒฝ์ฐ์๋ง cornerStyle์ ๊ฑธ์ด์ฃผ์๊ธฐ ๋๋ฌธ์ corner๊ฐ ๋ฅ๊ทธ๋๊ฒ ๋์ค๊ณ , 15๋ฏธ๋ง์ธ ๋ฒ์ ์๋ ์์ง cornerRadius๊ด๋ จํ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ค๋ชจ๋ณ๊ฒ ๋์จ๋ค.
์ด๋ก์จ ๋๋, ๋ฒํผ ๋ถ๊ธฐ์ฒ๋ฆฌ์ ์ฑ๊ณตํ๋ฐ!!!!! ์ด๊ฑธ๋ก ์ดํ ๊ณ ์ํ๊ฑด ์๋น๋ฐ ์ฟ