ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SwiftUI] clipShape
    SwiftUI 2023. 8. 7. 10:56

    ๋ทฐ์— ๋Œ€ํ•œ ํด๋ฆฌํ•‘ ๋ชจ์–‘์„ ์„ค์ •ํ•œ๋‹ค.

    func clipShape<S>(
        _ shape: S,
        style: FillStyle = FillStyle()
    ) -> some View where S : Shape
    

    shape ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ทฐ์— ์‚ฌ์šฉํ•  ํด๋ฆฌํ•‘ ๋ชจ์–‘์œผ๋กœ, ๊ฐ€๋กœ ์„ธ๋กœ ๋น„์œจ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ทฐ์˜ ํ”„๋ ˆ์ž„์„ ์ฑ„์šด๋‹ค. shape ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Shape ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•œ๋‹ค.

    style ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ชจ์–‘์„ ๋ž˜์Šคํ„ฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•  fill ์Šคํƒ€์ผ๋กœ, ๊ธฐ๋ณธ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค.

    ์ฐธ๊ณ ๋กœ FillStyle์€ ๋ฒกํ„ฐ ๋„ํ˜•์„ ๋ž˜์Šคํ„ฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์Šคํƒ€์ผ๋กœ, ๊ตฌ์กฐ์ฒด์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ž˜์Šคํ„ฐํ™”๋ž€, ๊ทธ๋ž˜ํ”ฝ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ, ํ™”๋ฉด์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ”ฝ์…€๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

     

    style์„ ์‚ฌ์šฉํ•ด์„œ ๋„ํ˜•์˜ ๋ž˜์Šคํ„ฐํ™”๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ทฐ์— shape๋ฅผ ํด๋ฆฌํ•‘ํ•œ๋‹ค.

    ์ œ๊ณต๋œ shape๋กœ clipShape(_:style:)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ทฐ๋ฅผ ํด๋ฆฌํ•‘ํ•œ๋‹ค. ๋ทฐ์— ํด๋ฆฌํ•‘ shape๋ฅผ ์ ์šฉํ•˜๋ฉด, ๋ทฐ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์€ ์ œ๊ฑฐํ•˜๋ฉด์„œ shape๋กœ ๋ฎ์ธ ๋ทฐ์˜ ์ผ๋ถ€๋Š” ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ฆฌํ•‘ shape ์ž์ฒด๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฝ”๋“œ๋Š” Text ๋ทฐ์— ์›ํ˜• ํด๋ฆฌํ•‘ shape๋ฅผ ์ ์šฉํ•œ๋‹ค.

    Text("Clipped text in a circle")
        .frame(width: 175, height: 100)
        .foregroundColor(Color.white)
        .background(Color.black)
        .clipShape(Circle())
    

    ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, ์› ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š” ํ…์ŠคํŠธ ๋ถ€๋ถ„๋งŒ ํ‘œ์‹œ๋œ๋‹ค.

     

    shape ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋“ค์–ด๊ฐ€๋Š” ๋ทฐ๋“ค์€ ๋ชจ๋‘ Shape ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค.

    var body: some View {
            VStack(spacing: 20) {
                Color.pink
                    .frame(width: 200, height: 50)
                
                Color.pink
                    .frame(width: 200, height: 50)
                    .clipShape(Circle())
                
                Color.pink
                    .frame(width: 200, height: 50)
                    .clipShape(Ellipse())
                
                Color.pink
                    .frame(width: 200, height: 50)
                    .clipShape(Capsule())
                        
            }
        }


    FillStyle

    FillStyle์€ ๋ฒกํ„ฐ ๋„ํ˜•์„ ๋ž˜์Šคํ„ฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์Šคํƒ€์ผ๋กœ, ๊ตฌ์กฐ์ฒด์ด๋‹ค. ์ง€์ •๋œ ์„ค์ •์œผ๋กœ ์ƒˆ๋กœ์šด fill style์„ ์ƒ์„ฑํ•œ๋‹ค.

    ์—ฌ๊ธฐ์„œ ๋ž˜์Šคํ„ฐํ™”๋ž€, ๊ทธ๋ž˜ํ”ฝ์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ, ํ™”๋ฉด์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ”ฝ์…€๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.


     

     

    clipShape(_:style:) | Apple Developer Documentation

    Sets a clipping shape for this view.

    developer.apple.com

     

    ๋Œ“๊ธ€

Designed by Tistory.