Gominsee ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ก๊ทธ์ธ/๋ก๊ทธ์์์ ์ฌ๋ถ๋ฅผ ํ๋จํด์ ํ๋ฉด์ ์ ํํ๋ ์์ ์ ๋ด๋นํ๋ค. ์ค์ ํ์ด์ง์์ '๋ก๊ทธ์์'๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ก๊ทธ์์์ด ๋์ด์ผํ๋๋ฐ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ ํํ๊ฒ ์ด "๋ก๊ทธ์์"์ด๋ผ๋ ๊ธ์จ๋ฅผ ํด๋ฆญํด์ผ ๋ก๊ทธ์์์ด ์คํ๋๋ ๊ฒ์ด๋ค. ์ฌ์ฉ์ ๊ฒฝํ์ ์ผ๋ก ๋ดค์๋, ์ ๋ ๊ฒ ์์ญ์ด ๋๋ ์ ธ์์ผ๋ฉด '๋ก๊ทธ์์'์ด ์๋ row ์ ์ฒด ์ด๋๋ ํด๋ฆญํด์ผ ๋ก๊ทธ์์์ด ๋์ด์ผํ ๊ฒ์ด๋ค. ์๋ ์ฌ์ง์ฒ๋ผ ๋นจ๊ฐ์ ๋ถ๋ถ ์ ์ฒด๋ฅผ ํด๋ฆญํ์ ๋ ๋ง์ด๋ค.
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ Button์ ํฐ์น์์ญ์ผ๋ก ์์ ์ ์ฌ๋ฌ๋ฒ ํ ๊ฒฝํ์ด ์์ง๋ง, ๋ฐ๋ก ์ ๋ฆฌํด๋์ง ์์์ ์ด๋ฒ์ ๋ ๊ตฌ๊ธ๋ง์ ํด๋ณด๊ณ ์ด ์ค๋ฅ๋ฅผ ์์ ํ๋ค. ์ด์ ๋ถํฐ๋ผ๋ ๊ทธ๋ ๊ฒ ํ์ง ์๊ธฐ ์ํด ์ ๋ฆฌ๋ฅผ ํด๋๋ ค๊ณ ํ๋ค.
๐ 1. View ํ์ ์ธ Text + onTapGesture์ด์ฉํ๊ธฐ
<์ ๋ฆฌํด์ ๋งํ์๋ฉด>
- Text ์ onTapGesture๋ก action์ ์ถ๊ฐํ๋ค.
- frame์ ๋์ ์์ญ์ผ๋ก ์ก์์ค ๋ค, backgroundColor๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ํด๋น frameํฌ๊ธฐ๋งํผ touchable area๊ฐ ํ์ฅ๋๋ค.
- ๋ง์ฝ frame๋ง ์ก๊ณ , backgroundColor๋ฅผ ๋ฃ์ง ์์ clear ํ ์ํ๋ผ๋ฉด, .contentShape(//๋ํ์ด๋ฆ)์ ์ถ๊ฐํ์.
<์์ธ ์ค๋ช >
Button(action: {
// action
}, label: {
Text("๋ก๊ทธ์์")
}
์ด๋ ๊ฒ ๋ฒํผํ์์ผ๋ก ๋ง๋ค์์๋, ์์ ๊ฐ์ ํ์์ด ๋ฐ์ํ ๊ฒ์ด๋ค. ์๋ Button ์ label ์ด touch area ๋ผ๊ณ ํ๋ค. ๊ทธ๋์ ์ด๊ฒ์ Text๋ก ๋ฐ๊พธ๊ณ , onTapGesture๋ฅผ ์ฌ์ฉํด์ ๋ฒํผ์ฒ๋ผ ๋ง๋ค์๋ค.
Text("๋ก๊ทธ์์")
.foregroundColor(.blue)
.frame(maxWidth: .infinity, alignment: .leading)
.onTapGesture {
print("๋ก๊ทธ์์ ํฐ์น")
}
์ด์ฒ๋ผ Text๋ก ๋ง๋ค๊ณ frame์ ์ฃผ์ด text์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ๋ง๋ค์ด์ฃผ์๋ค. Frame์ ์ฃผ๋ฉด ์๋ ์ฌ์ง์ฒ๋ผ Text์ ์์ญ์ด ๋๊ฒ ์กํ๋ค.
์ด๋ ๊ฒ ํ๊ณ build๋ฅผ ํด๋ดค๋๋ฐ, ๊ทธ๋๋ ๋๊ฐ์ด Text๋ฅผ ํด๋ฆญํด์ผ๋ง ๋์ํ๋ ๊ฒ์ด์๋ค. ์๋ ์ฌ์ง์ฒ๋ผ ์์์ ๋ฃ์ด๋ณด์๋ค.
์ ์ฌ์ง์ฒ๋ผ ์์์ ๋ฃ๋๋ค๋ฉด ์ ์์ ์ผ๋ก ๋นจ๊ฐ๋ถ๋ถ ์๋ฌด๋ฐ๋ ๋๋ฌ๋ ํฐ์น๊ฐ ๊ฐ๋ฅํ๋ค. ๋ญ๊ฐ ๋ฌธ์ ์ธ๊ฐ ์๊ฐํด๋ณด๋, frame์ผ๋ก ์กํ ์์ญ์ด clearํ ์ํ์๊ธฐ ๋๋ฌธ์ touchable ํ์ง ์์๋ ๊ฒ์ด์๋ค. clearํ ์ํ์์๋ touchableํ๋๋ก ๋ฐ๊ฟ์ฃผ๋ ค๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ผํ๋ค.
Text("๋ก๊ทธ์์")
.foregroundColor(.blue)
.frame(maxWidth: .infinity, alignment: .leading)
.contentShape(Rectangle())
.onTapGesture {
print("๋ก๊ทธ์์ ํฐ์น")
}
.contentShape(Rectangle())
์ ์ฝ๋๋ ์์ ๋ญ๊ฐ์๋ ์๋ ์ ์ฒด stack์ ๋ชจ๋ ํฐ์น ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ณ ์ถ์๋ ์ฌ์ฉํ๋ ์ฝ๋์ด๋ค. stack์ container๊ฐ ์๋๋ผ Rectangle์ด๋ผ๋ shape๋ก ์ธ์ํ๊ฒ ํด์ ๋ชจ๋ ์์ญ์ tappableํ๊ฒ ํ๋ ์๋ฆฌ์ด๋ค.
๐ 2. Button ์ label ์ frame ์ฌ์ด์ฆ๋ฅผ ๋๊ฒ ์ฃผ๊ธฐ
๋ฒํผ๊ณผ, label์ ์ฌ์ด์ฆ๋ฅผ ๋์ผํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋น๊ต์ ๊ฐ๋จ!
Button(action: {
print("๋ก๊ทธ์์ ํฐ์น - ๋ฒํผํ์")
}, label: {
Text("๋ก๊ทธ์์")
.frame(maxWidth: .infinity, alignment: .leading)
})
button ํ์์ผ๋ก ๋ง๋๋๊ฒ ๋ ๊น๋ํ๊ณ .. ๋ช ํํ๊ฒ ๋ณด์ฌ์ใ ..? ์ข์ ๋ฐฉ์์ธ๊ฑฐ ๊ฐ๊ธฐ๋..?