Maui: [์‚ฌ์–‘] ์•ฑ๋ฐ”

์— ๋งŒ๋“  2020๋…„ 06์›” 18์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/maui

์•ฑ๋ฐ”

์•ฑ ๋ฐ”๋Š” ๋„๊ตฌ ๋ชจ์Œ๊ณผ ์ž ์žฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ณด๊ธฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜ ์ด์ƒ์˜ ์ž‘์—…์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์•ฑ๋ฐ” ์‚ฌ์šฉ์˜ ์ฃผ์š” ์ด์ ์€ ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ต์…˜:

  • ์‚ฌ์šฉ์ž ์ •์˜ ์•ฑ ๋ฐ” ๋†’์ด.
  • ์ œํ•œ ๋˜๋Š” ์ œํ•œ(์—ฌ๋ฐฑ, ํฌ๊ธฐ ๋“ฑ) ์—†์ด ์ฝ˜ํ…์ธ ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • ํˆฌ๋ช…ํ•œ ์•ฑ๋ฐ”.
  • ๋“ฑ.

์ฐธ๊ณ : AppBar๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ฝ˜ํ…์ธ  ์ถ”๊ฐ€, ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•œ ์œ„์น˜ ์ง€์ • ๋“ฑ๊ณผ ๊ฐ™์ด ๊ธฐ๋ณธ ํƒ์ƒ‰ ๋ชจ์Œ์ด ํ•œ๊ณ„์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ์ธ๊ณ„๋ฐ›๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ณด๊ธฐ ์ž…๋‹ˆ๋‹ค.

Xamarin.Forms์—์„œ ์•ฑ ๋ชจ์Œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ™”๋ฉด ์ƒ๋‹จ์— ์•ฑ ๋ชจ์Œ์„ ๊ณ ์ • ๋†’์ด ์œ„์ ฏ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” Shell.AppBar ์†์„ฑ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

appbar

API

๋‹ค์Œ์œผ๋กœ AppBar ์†์„ฑ ๋ฐ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ๋Š” ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

์†์„ฑ

| ์žฌ์‚ฐ | ์œ ํ˜• | ์„ค๋ช… |
|------------|:-------------:|:------------:|
| ๋ฐฐ์น˜ | ์•ฑ๋ฐ” ๋ฐฐ์น˜ | AppBar ๋ฐฐ์น˜(์ƒ๋‹จ ๋˜๋Š” ํ•˜๋‹จ). |
| ๋ง‰๋Œ€ ๋†’์ด | ๋”๋ธ” | ์•ฑ ๋ฐ” ๋†’์ด๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. |
| ๋ฐ”๋ฐฐ๊ฒฝ | ๋ธŒ๋Ÿฌ์‹œ | ๋ฐฐ๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋Ÿฌ์‹œ์ž…๋‹ˆ๋‹ค. |
| BarBackgroundImage | ์ด๋ฏธ์ง€ ์†Œ์Šค | ๋ฐฐ๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ImageSource์ž…๋‹ˆ๋‹ค. |
| ๋ฐ”ํ…์ŠคํŠธ์ƒ‰์ƒ | ์ƒ‰์ƒ | ํ…์ŠคํŠธ์— ์‚ฌ์šฉ๋œ ์ƒ‰์ƒ(์ œ๋ชฉ ๋“ฑ). |
| ํƒ์ƒ‰ ์•„์ด์ฝ˜ | ์ด๋ฏธ์ง€ ์†Œ์Šค | ํƒ์ƒ‰ ์•„์ด์ฝ˜(๋’ค๋กœ ๋ฒ„ํŠผ ๋“ฑ)์„ ์ œ๊ณตํ•˜๋Š” ImageSource์ž…๋‹ˆ๋‹ค. |
| BackButton์ œ๋ชฉ | ๋ฌธ์ž์—ด | ์•ฑ ๋ฐ” ๋’ค๋กœ ๋ฒ„ํŠผ ์ œ๋ชฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. |
| ํ…Œ๋‘๋ฆฌ ์ƒ‰์ƒ | ์ƒ‰์ƒ | ์•ฑ ๋ฐ” ํ…Œ๋‘๋ฆฌ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค. |
| ํ…Œ๋‘๋ฆฌ ๋‘๊ป˜ | ๋‘๊ป˜ | ๋ชจ๋“  ๋ฉด์˜ ์•ฑ๋ฐ” ํ…Œ๋‘๋ฆฌ ๋„ˆ๋น„์ž…๋‹ˆ๋‹ค. |
| ํฐํŠธํŒจ๋ฐ€๋ฆฌ | ๋ฌธ์ž์—ด | ์•ฑ ๋ฐ” ํ…์ŠคํŠธ์— ์‚ฌ์šฉ๋œ ๊ธ€๊ผด ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. |
| ๊ธ€๊ผด ์†์„ฑ | ๊ธ€๊ผด ์†์„ฑ | ์•ฑ ๋ฐ” ํ…์ŠคํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ๊ธ€๊ผด ์†์„ฑ์ž…๋‹ˆ๋‹ค. |
| ๊ธ€๊ผด ํฌ๊ธฐ | ๋”๋ธ” | ์•ฑ ๋ฐ” ํ…์ŠคํŠธ์— ์‚ฌ์šฉ๋œ ๊ธ€๊ผด ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. |
| ํƒ€์ดํ‹€๋ทฐ | ๋ณด๊ธฐ | ์•ฑ ํ‘œ์‹œ์ค„์— Xamarin.Forms ๋ณด๊ธฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. |
| ๋ฐฑ์ปค๋งจ๋“œ | ์•„์ด์ปค๋งจ๋“œ | ๋’ค๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋ช…๋ น์ด ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. |
| ๋’ค๋กœ ๋ช…๋ น ๋งค๊ฐœ๋ณ€์ˆ˜ | ๊ฐœ์ฒด | ๋’ค๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. |

์ด๋ฒคํŠธ

| ์ด๋ฒคํŠธ | ์„ค๋ช… |
|------------|:-------------:|
| ๋’ค๋กœ ํƒญ | ์‚ฌ์šฉ์ž๊ฐ€ ๋’ค๋กœ ์ด๋™ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. |

์‹œ๋‚˜๋ฆฌ์˜ค

์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒ˜ํ”Œ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์•ฑ ๋ฐ”

๊ธฐ๋ณธ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

<Shell>
     <Shell.AppBar>
         <AppBar />
     </Shell.AppBar>
    ...
</Shell>

๋งž์ถคํ˜• ์•ฑ ๋ฐ”

์‚ฌ์šฉ์ž ์ •์˜ ๋†’์ด ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ์ฝ˜ํ…์ธ (TitleView)๊ฐ€ ์žˆ๋Š” ํˆฌ๋ช… ๋ง‰๋Œ€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ์–‘์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

<Shell>
     <Shell.AppBar>
        <AppBar  
            BarHeight="120"
            BarBackgroundColor="Transparent">
            <AppBar.TitleView>
            ...
            </AppBar.TitleView>
        </AppBar>
     </Shell.AppBar>
    ...
</Shell>

๋†“๊ธฐ

์ƒ๋‹จ ์•ฑ ๋ฐ”(๊ธฐ๋ณธ ๋ฐฐ์น˜)๋Š” ๋ชจ๋ฐ”์ผ ํ™”๋ฉด ์ƒ๋‹จ์— ํƒ์ƒ‰ ๋ฐ ์ž‘์—…์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

<Shell>
     <Shell.AppBar
          Placement="Top">
         <AppBar />
     </Shell.AppBar>
    ...
</Shell>

appbar-top

ํ•˜๋‹จ ์•ฑ ๋ฐ”๋Š” ๋ชจ๋ฐ”์ผ ํ™”๋ฉด ํ•˜๋‹จ์— ํƒ์ƒ‰ ๋ฐ ์ž‘์—…์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

<Shell>
     <Shell.AppBar
          Placement="Bottom">
         <AppBar />
     </Shell.AppBar>
    ...
</Shell>

appbar-bottom

์Šคํƒ€์ผ ์‚ฌ์šฉ

XAML ์Šคํƒ€์ผ ๋˜๋Š” CSS ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒญ ์ฝ˜ํ…์ธ , ํƒญ ์ŠคํŠธ๋ฆฝ, ํƒญ ํ•ญ๋ชฉ ๋“ฑ์˜ ๋ชจ์–‘์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XAML ์‚ฌ์šฉ:

<Style
    x:Key="AppBarStyle"
    TargetType="AppBar">
    <Setter
        Property="BarHeight"
        Value="120" />
    <Setter
        Property="BarBackgroundColor"
        Value="Transparent" />
</Style>

CSS ์‚ฌ์šฉ:

.appBarStyle {
  background: transparent;
  height: 120px;
}

๋‚œ์ด๋„ : ์ค‘

์ถ”๊ฐ€ ์ •๋ณด

https://github.com/xamarin/Xamarin.Forms/issues/10774 ๊ธฐ๋ฐ˜

proposal-open

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ‘œ์ค€ ํƒ์ƒ‰ ํŽ˜์ด์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์šฐ์„ ์ ์œผ๋กœ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค!!
๋ชจ๋‘๊ฐ€ Shell์˜ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๋Œ€๋ถ€๋ถ„ Enterprise Application ๋˜๋Š” Xamarin Forms๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Big Application!!

๊ฐ์‚ฌ ํ•ด์š”!!

๋ชจ๋“  6 ๋Œ“๊ธ€

ํ‘œ์ค€ ํƒ์ƒ‰ ํŽ˜์ด์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์šฐ์„ ์ ์œผ๋กœ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค!!
๋ชจ๋‘๊ฐ€ Shell์˜ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๋Œ€๋ถ€๋ถ„ Enterprise Application ๋˜๋Š” Xamarin Forms๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Big Application!!

๊ฐ์‚ฌ ํ•ด์š”!!

์˜ˆ, ์ด ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜๊ณ  ์…ธ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์–ด๋ ค์šด ์…ธ ์ด์ „ ์•ฑ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ณตํ•ฉ Forms View์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

CollectionView์˜ ์…€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฌดํ•œํ•œ ์ˆ˜์˜ AppBar๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BackButtonTitle๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์—์„œ String ๋Œ€์‹  View ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ๋Š” Xamarin Community Toolkit์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@PureWeen ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? Xamarin Community Toolkit ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ AppBar์— ๋Œ€ํ•ด ์—ด๋ฆฐ ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

PureWeen picture PureWeen  ยท  21์ฝ”๋ฉ˜ํŠธ

handicraftsman picture handicraftsman  ยท  4์ฝ”๋ฉ˜ํŠธ

qcjxberin picture qcjxberin  ยท  5์ฝ”๋ฉ˜ํŠธ

adojck picture adojck  ยท  15์ฝ”๋ฉ˜ํŠธ

jsuarezruiz picture jsuarezruiz  ยท  3์ฝ”๋ฉ˜ํŠธ