Border๋ ๋ฐ๊นฅ์ผ๋ก ๊ทธ๋ ค์ง๊น ์์ชฝ์ผ๋ก ๊ทธ๋ ค์ง๊น? ์คํด์ ์ฝ์ง์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.
Answer
innerborder๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด์๋ ํ์ฌ ํํ๋๋ frame์ border width๋งํผ ์ค์ฌ๋ฒ๋ฆฌ๋ฉด ๋๋ค.inset(by:)
,insetBy(dx:dy:)
๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ค.
import UIKit
internal final class InnerBorderViewController: UIViewController {
internal override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
self.defaultBorderView.backgroundColor = .red
self.outerBorderView.backgroundColor = .blue
self.innerBorderView.backgroundColor = .blue
self.defaultBorderView.alpha = 0.5
self.outerBorderView.alpha = 0.5
self.defaultBorderView.frame = CGRect(origin: CGPoint(x: 50, y: 100),
size: CGSize(width: 100, height: 100))
self.outerBorderView.frame = CGRect(origin: CGPoint(x: 50, y: 100),
size: CGSize(width: 100, height: 100))
self.innerBorderView.frame = CGRect(origin: CGPoint(x: 50, y: 400),
size: CGSize(width: 100, height: 100))
self.outerBorderView.layer.borderWidth = 2
self.innerBorderView.layer.borderWidth = 2
self.view.addSubview(self.defaultBorderView)
self.view.addSubview(self.outerBorderView)
self.view.addSubview(self.innerBorderView)
// inset(by:)
self.innerBorderView.frame = self.innerBorderView.frame.inset(by: UIEdgeInsets(top: 2,
left: 2,
bottom: 10,
right: 10))
// insetBy(dx:dy:)
// self.innerBorderView.frame = self.innerBorderView.frame.insetBy(dx: 2, dy: 2)
}
private let defaultBorderView = UIView()
private let outerBorderView = UIView()
private let innerBorderView = UIView()
}
- ๋ค์์ View๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์์์ผ๋ณธ ๊ฒฐ๊ณผ, Border๋ ๊ธฐ๋ณธ์ ์ผ๋ก inner๋ก ๋ค์ด๊ฐ๋ค.
- ๊ฐ์ ํฌ๊ธฐ์ธ ์ํฉ์์ border๋ฅผ ๋ฃ๊ณ ๋ํ๋ฉด์ ๊ฒน์ณ๋ณธ ๊ฒฐ๊ณผ border๊น์ง ํฌํจํ ํฌ๊ธฐ๋ผ๋ ๊ฒ์ด ํ์ธ๋์๋ค.
- defaultBorderView: red
- outerBorderView: blue
์คํด
- inset ๊ด๋ จ ํจ์๋ ๋ง ๊ทธ๋๋ก frame์ insetํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด์ค๋ ํจ์์ ๋ถ๊ณผํ๋ค.
- border๋ inner๋ก ๊ทธ๋ ค์ ธ, border๊น์ง ํฌํจํ ํฌ๊ธฐ๋ก ํ๋ฉด์ ๊ทธ๋ ค์ง๋ค.