๐ŸŽ iOS & Swift

[iOS] ์ ์„ (dash-line) ๊ทธ๋ฆฌ๊ธฐ

taeeekki 2022. 8. 24. 01:11


์…€์„ ๋ณด๋ฉด ํฐ์ƒ‰ ์ ์„ ์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ์…€ ์•ˆ์— ์ ์„ ์„ ๊ทธ๋ ค์„œ ๋„ฃ์–ด์ฃผ๊ณ  ์‹ถ์–ด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ดค๋Š”๋ฐ ์žˆ๋”๋ผ.. ๊ทธ๋ž˜์„œ ์•ผ๋ฌด์ง€๊ฒŒ ์ด์šฉํ•ด์ฃผ์—ˆ๋‹ค. ํŠน๋ณ„ํ•œ ๋‚ด์šฉ์€ ์—†๋‹ค. ๋ฌธ์„œ์— ์˜ˆ์ œ ์ฝ”๋“œ๊ฐ€ ์ž˜ ๋‚˜์™€์žˆ์–ด์„œ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ํ•œ ๊ฐ€์ง€ ํฌ์ธํŠธ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

Core Animation > CAShapeLayer > lineDashPattern

CAShapeLayer ์•„๋ž˜์— ์žˆ๋Š” ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ์ด๋‹ค. CAShapeLayer ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  lineDashPattern์— ์ˆซ์ž ๋ฐฐ์—ด์„ ๋Œ€์ž…ํ•ด์ฃผ๋ฉด ์ž…๋ง›์— ๋งž๊ฒŒ ์ ์„ ์„ ๊ทธ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์€ nil์ด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์‹ค์„ ์œผ๋กœ ๋ณด์ธ๋‹ค. ์ ์ ˆํ•˜๊ฒŒ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ฆฌ๋ ค๋Š” view์˜ ํ•˜์œ„ ๋ทฐ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ์™„์„ฑ์ด๋‹ค.


dashLineView.do {
    let lineDashPattern: [NSNumber]? = [6, 12, 18, 24]

    let shapeLayer = CAShapeLayer()
    shapeLayer.strokeColor = UIColor.white.cgColor
    shapeLayer.lineWidth = 3
    shapeLayer.lineDashPattern = lineDashPattern

    let path = CGMutablePath()
    path.addLines(between: [CGPoint(x: 0, y: 0),
                            CGPoint(x: 640, y: 0)])

    shapeLayer.path = path
    $0.layer.addSublayer(shapeLayer)
}

์—ฌ๊ธฐ์„œ dashLineView๋Š” ๊ทธ๋ƒฅ ๋นˆ UIView ์ธ์Šคํ„ด์Šค์ด๋‹ค. ํ•ด๋‹น ๊ฐ์ฒด์— ์„œ๋ธŒ ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. lineDashPattern์˜ ์ˆซ์ž ๊ฐ’์€ ๊ทธ๋ƒฅ figma์— ์žˆ๋Š” ์ˆซ์ž ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋„ฃ์–ด์คฌ๋Š”๋ฐ ๋ญ”๊ฐ€ ๋˜‘๊ฐ™์ด ๊ทธ๋ ค์ง€์ง€๋Š” ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ข€ ๋” ์—ฐ๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๊ทธ๋‚˜์ €๋‚˜ ์…€ ๋””์ž์ธ ๊ณ„์† ๋ณด๋‹ค๋ณด๋‹ˆ๊นŒ ์ข€ ๋ณ„๋ก ๋ฐ..? (๋ฐ”๊พธ์ž..๐Ÿ™ƒ)