Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

potato's iOS Story/๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋งŒ๋‚œ ์นœ๊ตฌ๋“ค

[Swift] Content Priority Ambiguity ์—๋Ÿฌ ํ•ด๊ฒฐํ•˜๊ธฐ (hugging priority, compression resistance priority ๋ž€?)

๊ฐ์ž ๐Ÿฅ” 2022. 1. 28. 15:54
๋ฐ˜์‘ํ˜•

Swift์—์„œ AutoLayout์„ ํ™œ์šฉํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋‹ค๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ margin์„ ์„ค์ •ํ–ˆ์„ ๋ถ„์ธ๋ฐ ์™œ.. ๋„๋Œ€์ฒด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€?

label๊ณผ label ์‚ฌ์ด์— margin์„ 20์œผ๋กœ ์„ค์ •ํ–ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋นจ๊ฐ„์ค„์ด ๋œจ๋ฉด์„œ ์ „ํ˜€ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜๋‹ค. ์™œ ์•ˆ์›€์ง์—ฌ?? ์ด๋Š” ๋ฐ”๋กœ error๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.

์™ผ์ชฝ ๋„ค๋น„๊ฒŒ์ดํ„ฐ(?)์— ๋ณด๋ฉด, ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ์ž‘์€ ๋นจ๊ฐ„ ํ™”์‚ดํ‘œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ํด๋ฆญํ•ด๋ณด์ž.

๋ฌด์Šจ์—๋Ÿฌ์ผ๊นŒ? ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

"Content Priority Ambiguity", "Set vertical hugging priority"๋ผ๊ณ  ๋‚˜์˜จ๋‹ค. ๋„๋Œ€์ฒด ๋ฌด์Šจ๋ง์ผ๊นŒ.
์ด๋Š” ๋ฐ”๋กœ content hugging priority๋ฅผ ์„ค์ •ํ•˜๋ผ๋Š” ๋œป์ด๋‹ค. ์ด๋Š” side inspector ๋ฉ”๋‰ด์—์„œ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค. (์•„๋ž˜ ์‚ฌ์ง„์„ ๋ณด์ž. xcode ์™ผ์ชฝ ์‚ฌ์ด๋“œ ๋ฐ” ์•„๋ž˜์—์„œ ๋‘๋ฒˆ์งธ ์œ„์— ์žˆ๋Š” content hugging priority ๋ฉ”๋‰ด์—์„œ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค)

 

 

์—ฌ๊ธฐ์„œ ์ž ๊น, content hugging priority๋ž€ ๋ฌด์—‡์ผ๊นŒ?

ui ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ผ๋ถ€ view์—๋Š”, contents ๊ณ ์œ  ์‚ฌ์ด์ฆˆ๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, UI Label, UI button๋“ค๊ณผ ๊ฐ™์€ ๋ทฐ์˜ ์†์„ฑ, ํ…์ŠคํŠธ๋‚˜ ์ด๋ฏธ์ง€์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜๋Š” view๋“ค์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ view๋“ค์€ ๋‹ค๋ฅธ view๋“ค๊ฐ„์˜ ๊ฑธ๋ฆฐ ์ œ์•ฝ์— ์˜ํ•ด ๋ณธ๋ž˜์˜ ์ฝ˜ํ…์ธ  ๊ณ ์œ  ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ๋” ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์ค„์–ด๋“ค๊ฒŒ ๋œ๋‹ค. ๋” ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๋Š”๊ฒƒ์— ๋Œ€ํ•ด ์ €ํ•ญํ•˜๋Š” ์ œ์•ฝ์„ contents hugging์ด๋ผ๊ณ  ํ•˜๊ณ , ์ค„์–ด๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ €ํ•ญํ•˜๋Š” ์ œ์•ฝ์„ contents compression resistance ๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๊ณ ์œ  ์ฝ˜ํ…์ธ  ์‚ฌ์ด์ฆˆ์˜ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ œ์•ฝ์—๋„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ฝ˜ํ…์ธ  ๊ณ ์œ  ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ๋” ๋Š˜์–ด๋‚  ๊ฒฝ์šฐ, ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜์–ด๋‚˜๊ฒŒ ํ• ๊ฑด์ง€ ์ค„์–ด๋“ค๊ฒŒ ํ•  ๊ฑด์ง€ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์–ด๋–ค๊ฒƒ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ฃผ์–ด์•ผํ• ์ง€ hugging priority๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค!

hugging  priority์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์œผ๋ฉด ๋‚ด ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€์• ์˜ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ์•ผ ํ•˜๋Š” ๋ผ๋ฒจ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ๊ฒŒ ์„ค์ •ํ•ด์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚˜๋Š” ๋‘๊ฐœ์˜ ๋ผ๋ฒจ ์ค‘ ์œ„์—์žˆ๋Š” ๋ผ๋ฒจ์˜ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒํ•˜๊ณ  ์‹ถ์–ด์„œ, ์œ„์— ์žˆ๋Š” ๋ผ๋ฒจ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋” ๋‚ฎ๊ฒŒ! ์„ค์ •ํ•ด ์ฃผ์—ˆ๋‹ค.

๋‘ ๋ผ๋ฒจ์˜ ๊ด€๊ณ„๋Š” vertical ๋กœ ๋†“์—ฌ์ ธ ์žˆ๊ธฐ์—, vertical์˜ hugging priority๋ฅผ ์„ค์ •ํ•ด์ฃผ์—‡๊ณ , ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ ์œ„์˜ ๋ผ๋ฒจ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ๊ฒŒ ์ฃผ๊ณ  ์‹ถ์–ด์„œ 251๋กœ ๋‘์—ˆ๋˜ ์ˆ˜๋ฅผ, 250์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์—๋Ÿฌ๋Š” ์‚ฌ๋ผ์ง€๊ณ  ๋‚ด๊ฐ€ ์›ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์œ„์˜ ๋ผ๋ฒจ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค!

(compression resistance priorty๋Š” ์ง์—ญํ•˜๋ฉด ์••์ถ•์— ๋Œ€ํ•œ ์ €ํ•ญ(?) ์ด๋‹ค. ๊ทธ๋ž˜์„œ compression ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์œผ๋ฉด ์ž์‹ ์˜ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์œผ๋ฉด ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋œ๋‹ค.) 

์šฐ์„ ์ˆœ์œ„๋Š” 1~1000 ๊นŒ์ง€ 1๋‹จ์œ„๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•œ๋ฐ, 1000์€ required, 750์€ high, 500์€ medium,  250์€ low์™€ ๊ฐ™์ด 250 ๋‹จ์œ„๋กœ ๋ฏธ๋ฆฌ ์ง€์ •๋œ ๊ฐ’์ด ์žˆ์–ด์„œ ๋ณดํ†ต ์ด๋ ‡๊ฒŒ 250์„ ๋‹จ์œ„๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

 

๋!

๊ฐ„๋‹จํ•œ ์—๋Ÿฌ์ง€๋งŒ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด ์ ์–ด๋‘”๋‹ค ใ…Žใ…Ž :)

๋ฐ˜์‘ํ˜•