광어네 맛집
[Swift & Objective C] 점선 그리기 본문
728x90
반응형
이번 포스팅은 쉬운 거 같지만
막상 하려면 헷갈리는 점선 그리는 방법을 알아보도록 하겠습니다!
그리고 Swift 랑 Objective C 둘 다 적어보고자 합니다!
let dotLine = UIView(frame: CGRect(x: view.bounds.midX , y: view.bounds.midX,
width: 100, height: 100))
override func viewDidLoad() {
...
dotLine.backgroundColor = UIColor.black.cgColor
view.addSubView(dotLine)
...
}
우선 View 를 선언해줍니다
편의를 위해서 미리 view를 그려줬어요!
이후 CAShapeLayer 와 UIBezierPath 를 이용할건데
CAShaperLayer의 경우 색상과 줄간격을 설정하고
UIBezierPath의 경우 위치를 설정하는 거라 생각해주시면 됩니다
func drawDotLine() {
let layer = CAShapeLayer()
layer.strokeColor = UIColor.white.cgColor
layer.lineDashPattern = [10, 10]
let path = UIBezierPath()
let point1 = CGPoint(x: dotLine.bounds.midX, y: dotLine.bounds.minY)
let point2 = CGPoint(x: dotLine.bounds.midX, y: dotLine.bounds.maxY)
path.move(to: point1)
path.addLine(to: point2)
layer.path = path.cgPath
dotLine.layer.addSublayer(layer)
}
생각보다 간단하죠?
point 1 -> point 2 로 그려준다고 생각해주시면 됩니다!
그러면 다음과 같이 그려지게 됩니다!
이번에는 세로를 그렸으니 가로도 한번 그려볼까요?
func drawDotLine() {
let layer = CAShapeLayer()
layer.strokeColor = UIColor.white.cgColor
layer.lineDashPattern = [10, 10]
let path = UIBezierPath()
let point1 = CGPoint(x: dotLine.bounds.minX, y: dotLine.bounds.midY)
let point2 = CGPoint(x: dotLine.bounds.maxX, y: dotLine.bounds.midY)
path.move(to: point1)
path.addLine(to: point2)
layer.path = path.cgPath
dotLine.layer.addSublayer(layer)
}
Objective C 의 경우에는 다음과 같이 설정하시면 됩니다!
Objc 에서 보니 단순히 Int Array 인줄 알았는데 NSNumber Array인것도 확인할 수 있네요
CAShapeLayer *layer = [[CAShapeLayer alloc] init];
layer.strokeColor = [UIColor systemRedColor].CGColor;
NSArray *pattern = @[[NSNumber numberWithFloat:10], [NSNumber numberWithFloat:10]];
layer.lineDashPattern = pattern;
UIBezierPath *path = [[UIBezierPath alloc] init];
CGPoint point1 = CGPointMake(CGRectGetMidX(_dotLine.bounds), CGRectGetMinY(_dotLine.bounds));
CGPoint point2 = CGPointMake(CGRectGetMidX(_dotLine.bounds), CGRectGetMaxY(_dotLine.bounds));
[path moveToPoint:point1];
[path addLineToPoint:point2];
layer.path = path.CGPath;
[_dotLine.layer addSublayer:layer];
깊게 들어가면 재밌는 부분이 많아요!
그리고 다른 분들께서 작성하신 포스팅
View 에 점선그리기 등 많은 글이 나오니 참고하시면 좋을 듯 해요!
그리고 점선이 안그려질 수도 있는데
bounds, frame, view가 그려지는 시점도 같이 공부해보시는 것도 추천드립니다!
그럼 올해 마지막 포스팅 끝!
728x90
반응형
'Swift > Tips' 카테고리의 다른 글
[Storyboard] Black Screen 해결법 (2) | 2023.11.06 |
---|---|
[ipa 파일 넣기] Apple Configurator (0) | 2023.06.08 |
[UINavigation] Navigation Bar item 추가하기 (0) | 2022.02.22 |
[Navigation Pop]네비게이션 pop (0) | 2022.02.19 |
[Simulator Error] M1 SPM + CocoaPods 동시 사용 (0) | 2022.02.13 |