Swift

Swift - UIView ์ƒ๋‹จ์—๋งŒ ํ…Œ๋‘๋ฆฌ(border) ๋„ฃ๊ธฐ

Goniii 2024. 11. 4. 17:00

๐ŸŽ UIView ์ƒ๋‹จ border ๋„ฃ๊ธฐ

๐Ÿ“‘ ํ•™์Šต ๋‚ด์šฉ

  • ๋ทฐ์™€ ๋ทฐ ์‚ฌ์ด์˜ ๊ฒฝ๊ณ„์„ ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ
  • lineView๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์–ด ๊ฐ ๋ทฐ ์‚ฌ์ด ์‚ฌ์ด ๋„ฃ์–ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋˜์ง€๋งŒ, lineView๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ๊ธฐ๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ ๊ฒƒ ๊ฐ™์Œ
  • JustDrop ๊ทธ๋ฃน ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ทธ๋ฃน ๋ทฐ์˜ ์ƒ๋‹จ ํ…Œ๋‘๋ฆฌ๋งŒ ์ƒ‰์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Œ
  • ์ƒ๋‹จ ํ…Œ๋‘๋ฆฌ๋งŒ ์ง€์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— UIView ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜์—ฌ ์‚ฌ์šฉ 

 

UIView์˜ ์ƒ๋‹จ์— ์„œ๋ธŒ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ…Œ๋‘๋ฆฌ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

extension UIView {
    func addTopBorder(color: UIColor, width: CGFloat) {
        let border = UIView()
        border.backgroundColor = color
        border.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]
        border.frame = CGRect(x: self.frame.minX, y: self.frame.minY, width: self.frame.width, height: width)
        self.addSubview(border)
    }
}
  • addTopBorder(:) ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด border์˜ ์ƒ‰๊ณผ ๋‘๊ป˜(width)๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์Œ
  • ํ…Œ๋‘๋ฆฌ๋กœ ํ‘œ์‹œํ•  ๋ทฐ(border)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  background ์ƒ‰์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ color ์‚ฌ์šฉ
  • border.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]
    • autosizingMask : ๋ทฐ์˜ ํฌ๊ธฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐ์ •ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ •์ˆ˜ ๋น„ํŠธ ๋งˆ์Šคํฌ
    • flexibleWidth : ๋ถ€๋ชจ ๋ทฐ์˜ ๋„ˆ๋น„์— ๋”ฐ๋ผ ๊ฒฝ๊ณ„์„ ์˜ ๋„ˆ๋น„๊ฐ€ ์œ ๋™์ ์œผ๋กœ ์กฐ์ •
    • flexibleBottomMargin : ๋ถ€๋ชจ ๋ทฐ์˜ ๋†’์ด์— ๋”ฐ๋ผ ๊ฒฝ๊ณ„์„ ์˜ ์œ„์น˜๊ฐ€ ์œ ๋™์ ์œผ๋กœ ์กฐ์ •
  • x: self.frame.minX : border์˜ x ์ขŒํ‘œ๋ฅผ ๋ถ€๋ชจ ๋ทฐ์˜ ์™ผ์ชฝ ๊ฒฝ๊ณ„์— ๋งž์ถค
  • y: self.frame.minY : border์˜ y์ขŒํ‘œ๋ฅผ ๋ถ€๋ชจ ๋ทฐ์˜ ์œ„์ชฝ ๊ฒฝ๊ณ„์— ๋งž์ถค
  • width: self.frame.width : border์˜ width๋ฅผ ๋ถ€๋ชจ ๋ทฐ์˜ ๋„ˆ๋น„์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •
  • height: width : border์˜ height์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์€ ๋‘๊ป˜๋กœ ์„ค์ •

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • ํ™•์žฅํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ถ€๋ชจ ๋ทฐ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•จ
  • ๋”ฐ๋ผ์„œ, ๋ทฐ์˜ ๋ ˆ์ด์•„์›ƒ์ด ๋ชจ๋‘ ์งœ์—ฌ์ง„ ํ›„์— ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•จ
    override func viewDidLayoutSubviews() {
        let lineColor = UIColor(hex: "#F2F2F2") ?? .blue
        homeView.grpJustDrop.addTopBorder(color: lineColor, width: 1)
        homeView.grpHappyLook.addTopBorder(color: lineColor, width: 1)
    }

 

 

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

 

728x90