stack view๋Š” autolayout์„ ์ ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ layout์„ ์žก์„ ์ˆ˜ ์žˆ๋Š” ์‹ ๊ธฐํ•œ ์นœ๊ตฌ๋‹ค. ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ž. ์ด ๊ธ€์„ ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์ „๊ธ€์„ ์ฝ๊ณ  ์˜ค๋Š” ๊ฒƒ์ด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค.

Concept

์• ํ”Œ์—์„œ๋Š” ์ด stackview๋ฅผ constraint๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์žˆ๋Š” autolayout์„ ์‰ฝ๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. stackviewํ•˜๋‚˜๋Š” row๋‚˜ column ํ•˜๋‚˜๋ฅผ ์ •์˜ํ•˜๊ณ , ์‚ฌ์ „์— ๋งŒ๋“ค์–ด๋‘” properties๋“ค์„ ํ†ตํ•ด ์ด๋ฅผ ์ œ์–ดํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

  • axis(UIStackView): vertical ์ด๋ƒ horizontal์ด๋ƒ
  • orientation(NSStackView): vertical ์ด๋ƒ horizontal์ด๋ƒ
  • distribution: axis๋ฅผ ๋”ฐ๋ผ view๋“ค์ด ์–ด๋–ป๊ฒŒ(ํฌ๊ธฐ๊ฐ€) ๋ถ„๋ฐฐ๋ ์ง€๋ฅผ ์ •ํ•จ
  • alignment: axis์˜ ์ˆ˜์ง์ธ ๋ฐฉํ–ฅ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฐฐ๋ ์ง€๋ฅผ ์ •ํ•จ
  • spacing: ์ธ์ ‘ํ•œ View๋“ค ์‚ฌ์ด์— ๊ฐ„๊ฒฉ์„ ์ •์˜

์ด ๊ทธ๋ฆผ์€ UIKit์—์„œ ๊ฐ€์ ธ์˜จ ๊ฑด๋ฐ, ์œ„ property๋ฅผ ์ด ๊ทธ๋ฆผ์„ ๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด๋„๋ก ํ•˜์ž.

๋จผ์ € ๊ทธ๋ฆผ์— ๋‚˜์˜จ stackview๋Š” horizontal stackview์ธ๋ฐ, ์ด๋Ÿด ๊ฒฝ์šฐ ์ผ๋‹จ axis๋Š” horizontal์ผ ๊ฒƒ์ด๋‹ค.(UIStackView ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…) ๊ทธ๋ฆฌ๊ณ  distribution์˜ ์ •์˜๋ฅผ ๋ณด๋‹ˆ axis๋ฅผ ๋”ฐ๋ผ ๋ฐฐ์น˜๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ๊ฐ€๋กœ์ถ•์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ๋ฐ˜๋Œ€๋กœ alignment์˜ ๊ฒฝ์šฐ axis์— ์ˆ˜์ง ๋ฐฉํ–ฅ ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•์ด๋ฏ€๋กœ ์„ธ๋กœ์ถ•์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์›๋ฆฌ๊ฐ€ stackview ๋ฐ”๊นฅ์˜ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚ด๋ถ€ ์š”์†Œ๋“ค์„ ์ •๋ ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, stackview์˜ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

Axis

  • horizontal: ์š”์†Œ๊ฐ€ ์™ผ์ชฝ๋ถ€ํ„ฐ ๋“ค์–ด๊ฐ
  • vertical: ์š”์†Œ๊ฐ€ ์œ„๋ถ€ํ„ฐ ๋“ค์–ด๊ฐ

๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ๋•Œ, stackView์˜ ๊ฐ€์žฅ ๋๋ฉด (edge๋ผ ํ‘œํ˜„๋˜์–ด ์žˆ์Œ)๊ณผ ์š”์†Œ์˜ ๋๋ฉด์ด ๋งž๋‹ฟ๊ฒŒ ๋“ค์–ด๊ฐ„๋‹ค๊ณ  ํ•œ๋‹ค. ์ฆ‰, horizontal์ธ ๊ฒฝ์šฐ ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ ์™ผ์ชฝ edge๊ฐ€ stackview์˜ ์™ผ์ชฝ edge์™€ ๋งž๋‹ฟ๊ณ , vertical์ธ ๊ฒฝ์šฐ ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ top edge๊ฐ€ stackview์˜ top edge์™€ ๋งž๋‹ฟ๋Š”๋‹ค๋Š” ๋ง์ด๋‹ค. ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ƒ๋žตํ•˜๊ฒ ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด ๋•Œ, edge์™€์˜ margin์„ ์ฃผ๋ฉด์„œ ์š”์†Œ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. isLayoutMarginsRelativeArrangement ๋ผ๋Š” ํ”„๋กœํผํ‹ฐ์ด๋‹ค.

let stackview = UIStackView()
stackview.isLayoutMarginsRelativeArrangement = true
stackview.axis = .horizontal
stackview.layoutMargins.left = 20
stackview.layoutMargins.right = 20

์ด๋Ÿฐ์‹์œผ๋กœ ์ฃผ๋ฉด, stackview์˜ leading edge๊ฐ€ 20, trailing edge๊ฐ€ 20 ๋„์–ด์ง„ ์ƒํƒœ๋กœ ๋ฐฐ์น˜๋œ๋‹ค.

Distribution

ํ•ด๋‹น property๋Š” ๊ฒฐ๊ตญ ์š”์†Œ์˜ ์ถ• ๊ธฐ์ค€ ํฌ๊ธฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๊ฒ ๋ƒ๋Š” ๋ง์ด๋‹ค.

horizontal stackview๋ฅผ ๋งŒ๋“ค๊ณ , ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๋งŒ์•ฝ์— ์ด ์Šคํƒ๋ทฐ์— ๋“ค์–ด๊ฐ€๋Š” ์š”์†Œ๋“ค์ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ€๋กœ ๊ฐ„๊ฒฉ์„ ๊ฐ€์ง€๊ณ  ์‹ถ๋‹ค๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น property๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทผ๋ฐ ์ด์ „๊ธ€์—์„œ ํŠน์ดํ•œ ์นœ๊ตฌ๋“ค์€ intrinsic content size๋ผ๋Š” ๊ฒƒ์„ ๊ฐ€์ง„๋‹ค๊ณ  ์„ค๋ช…ํ–ˆ์—ˆ๋‹ค. stackview๋„ ์ด๋Ÿฐ์ ์„ ์•Œ๊ณ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ํ•ด๋‹น size๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋˜, ํ”Œ๋ ˆ๊ทธ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ด ์˜ต์…˜์ด ๋ฌด์‹œ๋  ๋•Œ๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

fill

๊ฐ€๋Šฅํ•˜๋ฉด ๊ฝˆ์•… ์ฑ„์šฐ๋ ด

์ž, stackview์— 4๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋„ฃ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค โ€œ์–ด๋–ค ์š”์†Œโ€๋ฅผ ๋„ฃ์—ˆ๋ƒ์— ๋”ฐ๋ผ ์ƒํ™ฉ์€ ๋‹ฌ๋ผ์ง„๋‹ค. stackview์˜ ๊ฐ€๋กœ ์‚ฌ์ด์ฆˆ๊ฐ€ 100์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž. 4๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋„ฃ์„ ๊ฑด๋ฐ ์ด ๊ฐ๊ฐ์˜ ์š”์†Œ์˜ intrinsic content size๊ฐ€ 25์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ์•„์ฃผ ํ–‰๋ณตํ•˜๊ฒŒ 25์”ฉ ๋‚˜๋ˆ ๋จน์œผ๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๊ฐ๊ฐ์˜ ์š”์†Œ๋ฅผ ์‚ฌ๋žŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ดค์„ ๋•Œ, 4์ธ์‹ค ๋ฐฉ์žก์•˜๋‹ค๊ณ  ๋ฐฉ์ด ํฌ๋ƒ ์ž‘๋ƒ ๋Š๋ผ๋Š” ๊ฒƒ์€ ๊ฐ ์‚ฌ๋žŒ ์‚ฌ์ด์ฆˆ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋จผ์ € ๋ฉธ์น˜ ์นœ๊ตฌ๋“ค์ด ๋“ค์–ด๊ฐ”์„ ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

๋ฉธ์น˜๋“ค์ด ๋“ค์–ด๊ฐ€์„œ ๋ฐฉ์ด ๋„๋„ํ•˜๊ฒŒ ๋‚จ๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ stackview์˜ distribution์„ fill๋กœ ์คฌ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋‹จ ๋Š˜์–ด๋‚˜๊ธด ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ธฐ์ค€์ด ๋ญ˜๊นŒ? ๊ทธ ๊ธฐ์ค€์€ hugging property๋กœ ํ•œ๋‹ค. hugging property๋Š” ๋” ์•ˆ๊ณ  ์‹ถ์–ด! ๋” ์•ˆ์•„์ง€๊ณ  ์‹ถ์–ด! ์˜ ์ •๋„์ธ๋ฐ, ๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด ๋Š˜์–ด๋‚˜๊ธฐ ์‹ซ์–ด!! ๋ผ๋Š” ๋ง๊ณผ ๋™์น˜์ด๋‹ค. ๊ฐ๊ฐ์˜ ์‚ฌ๋žŒ์— hugging property๋ฅผ ๋‹ฌ์•„๋‘์—ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜์—ˆ์„ ๋•Œ ๊ฐ€์žฅ ๋Š˜์–ด๋‚˜๊ธฐ ์‹ซ์€๊ฑด ์ฒซ๋ฒˆ์งธ ์š”์†Œ, ๋ฐ˜๋Œ€๋Š” ๋งˆ์ง€๋ง‰ ์š”์†Œ์ด๋‹ค. ๊ทธ๋ž˜์„œ stack view๋Š” hugging property๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ์นœ๊ตฌ๋ฅผ ์‚ฌ์ •์—†์ด ๋Š˜๋ ค๋ฒ„๋ฆฐ๋‹ค.

๋งŒ์•ฝ 4๋ฒˆ์งธ ์นœ๊ตฌ๋ฅผ ๋Š˜๋ ธ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ ํƒ€์ž๋Š” ์„ธ๋ฒˆ์งธ๋‹ค. ํž˜์˜ ๋…ผ๋ฆฌ๋‹ค.

์ด๋ฒˆ์—๋Š” ๋‚˜๊ฐ™์€ ๋ผ์ง€์นœ๊ตฌ๋“ค๋งŒ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ์ข์•„ํ„ฐ์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜์—ˆ์„ ๋•Œ๋„ ๊ฒฐ๊ตญ fill ์˜ต์…˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งž์ถ”๊ธด ๋งž์ถฐ์•ผ ํ•œ๋‹ค. ๋ˆ„๊ตด ํƒ€๊ฒŸ์œผ๋กœ ํ• ๊นŒ? ์ด ๋•Œ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฒƒ์ด Compress Resistance Property์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋‚œ ์ž‘์•„์ง€๊ธฐ ์‹ซ์–ด!! ๋ผ๋Š” ๋œป์ธ๋ฐ ์œ„ ์ƒํ™ฉ์— ์ฐธ ์ž˜ ๋งž๋‹ค. ๊ฒฐ๊ตญ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋„ค๋ฒˆ์งธ ์นœ๊ตฌ๊ฐ€ ๋ชธ์„ ๊ตฌ๊นƒ๊ตฌ๊นƒ ์ ‘๋Š”๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ตœ๋Œ€ํ•œ ์ ‘์—ˆ์Œ์—๋„(์ฆ‰, intrinsic content size๊นŒ์ง€) ๋ถˆ๊ตฌํ•˜๊ณ  ๊ณต๊ฐ„์ด ์•ˆ๋‚จ์œผ๋ฉด ๋‹ค์Œ์€ ์„ธ๋ฒˆ์งธ๋‹ค.

fillEqually

์‘ ์‹ธ์šฐ์ง€ ๋ง๊ณ  ๋ชจ๋‘ ๊ฐ™๊ฒŒ ๊ฐ€์ง€๋ ด

fill๊ฐ™์€ ๊ฒฝ์šฐ ํˆฌ์Ÿ์˜ ์—ฐ์†์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฑด ๊ณต์‚ฐ์ฃผ์˜ ์ฒด์ œ๋‹ค. ๋ชจ๋‘ ๊ฐ™๊ฒŒ ๋ฌด์กฑ์„  ๊ฐ€์ง€๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๊ฒฝ์šฐ intrisic content size์— ์ƒ๊ด€์—†์ด ๊ฐ™๊ฒŒ ๋ฐฐ์ •๋œ๋‹ค.

fillProportionally

์–ด ์ผ๋‹จ fillํ•œ๋‹ค์Œ์—, ๊ณต๊ฐ„์ด ๋‚จ์œผ๋ฉด ๋‹ˆ๋“ค size ๋น„์œจ์— ๋งž์ถฐ์„œ ์ปค์ง€๋ ด

์ผ๋‹จ stackview๋ฅผ ์ฑ„์šฐ๊ณ , ๋‚จ๋Š” ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ ๊ฐ ์š”์†Œ์˜ intrinsic content size ๋น„์œจ์— ๋งž๊ฒŒ ๊ณต๊ฐ„์„ ๋ถ„๋ฐฐํ•œ๋‹ค. ๋งŒ์•ฝ ์œ„์˜ ๋ฉธ์น˜๋“ค ๊ทธ๋ฆผ์—์„œ ๊ฐ ์š”์†Œ์˜ intrinsic content size๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด,

  • ์ฒซ๋ฒˆ์งธ: 10
  • ๋‘๋ฒˆ์งธ: 20
  • ์„ธ๋ฒˆ์งธ: 30
  • ๋„ค๋ฒˆ์จฐ: 40

๋‚จ์€ ๊ณต๊ฐ„์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋‚จ์€ ๊ณต๊ฐ„์„ 10๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด 1:2:3:4๋น„์œจ๋กœ ๋‚˜๋ˆ ๊ฐ–๋„๋ก ํ•˜์—ฌ fill์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

equalSpacing

๊ฐ„๊ฒฉ๋งŒ ๋งž์ถฐ!

์ด๊ฒƒ๋„ ์‚ฌ์‹ค ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ๊ณต๊ฐ„์ด ๋‚จ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ˆ„๊ฐ€ ๋Š˜์–ด๊ฐ€๋Š”๊ฐ€? ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ๋Š” ๋ˆ„๊ฐ€ ์ค„์–ด๋“œ๋Š”๊ฐ€?

fill ์˜ต์…˜์—์„œ ์žฅํ™ฉํ•˜๊ฒŒ ์„ค๋ช…ํ•œ ์ด์œ ๊ฐ€ ์—ฌ๊ธฐ์žˆ๋‹ค. hugging, compress๊ธฐ์ค€์œผ๋กœ ์ค„์–ด๋“ค๊ณ  ๋Š˜์–ด๋‚œ๋‹ค.

equalCentering

์ค‘์•™์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ„๊ฒฉ ๋งž์ถฐ!

์›๋ฆฌ๋Š” ๋™์ผํ•˜๋‹ค.

Alignment

๊ฐ€๋กœ๋Š” ์ด์ œ ๋๋‚ฌ๊ณ , ๋‹ค๋ฅธ ์ •๋ ฌ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค. Alignment๋Š” axis์˜ ์ˆ˜์ง์ธ, horizontal์ธ ๊ฒฝ์šฐ vertical, ๋ถ€๋ถ„์˜ ์ •๋ ฌ์„ ๊ฒฐ์ •ํ•˜๋Š” property๋‹ค.

์™ ๋งŒํ•˜๋ฉด ๊ทธ๋ฆผ๋งŒ ๋ด๋„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

Common

ํ•˜์œ„ ํ•ญ๋ชฉ์€ horizontal, vertical์— ์ƒ๊ด€์—†์ด ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 90๋„ ๋Œ๋ฆฌ๊ธฐ๋งŒ ํ•˜๋ฉด vertical์ด๋‹ค.

fill

center

axis: Horizontal

top

firstBaseline

bottom

lastBaseline

axis: Vertical

leading

trailing

Spacing

์ง€๊ธˆ๊นŒ์ง€ ์ฝ๋‹ค๋ณด๋ฉด, distribution์ด ๋ชจ๋“  ์—ญํ• ์„ ๋‹ค ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ์˜ต์…˜! fillProportionally์˜ ๊ฒฝ์šฐ์—๋Š” โ€œ๋‚จ๋Š” ๊ณต๊ฐ„์— ๋Œ€ํ•ด์„œ ๋น„์œจ์„ ์ ์šฉโ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์†Œ๋ผ๋ฆฌ์˜ ๊ฐ„๊ฒฉ์„ ์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค. fillProportionally์˜ ๊ฒฝ์šฐ์—๋Š” ๋”ฑ! ์ •ํ•ด์ง„ ๊ฐ’์„ ์ ์šฉํ•œ๋‹ค.

equalSpacing, equalCentering์˜ ๊ฒฝ์šฐ์—๋„ ํ•ด๋‹น ๊ฐ’์ด ์ ์šฉ๋˜๊ธฐ๋Š” ํ•˜๋‚˜, ์ด๋Š” โ€œ์ตœ์†Œ๊ฐ’โ€์ด๋‹ค.

๊ธฐ๋ณธ๊ฐ’์€ 0์ด๋ฉฐ, ์Œ์ˆ˜๋กœ ์ง€์ •ํ•  ๊ฒฝ์šฐ overlap์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Reference