가끔 우리는 아주 사소한 차이로 고민할 때가 있다.
이거 왜이러니? 기분탓인가? 한번 살펴볼까? 귀찮다 이정도쯤이야 뭐..
하고 지나친적이 있지 않은가ㅎ 나는 많다ㅎㅎ
최근에도 그랬다.
UIView에서 StrokeEllipse 를 이용해 rect 크기 만큼 원 테두리를 그릴수 있다.
하지만 그려 놓고 나니 왠지 생각보다 작아보였고, 안에 색깔있는 원을 넣으니 테두리 굵기마저 얇아 보였다.. 뭐지???
처음엔 그냥 지나쳤다가 똥싸고 손안씻은것처럼 찝찝해서 한번 살펴보았다.
바보같았다... 왜 몰랐을까? 테두리 굵기는 양쪽으로 넓어진다는 사실을...
그래서 한쪽 굵기만큼 반이 얇아지고 작게 보이는 것이었다.
아래와 같이 하면 금방 해결된다.. 혹시나 귀찮아서 그냥 지나칠 분들을 위해 글을 남긴다.
@IBInspectable var color: UIColor = UIColor.redColor()
@IBInspectable var borderColor: UIColor = UIColor.blackColor()
@IBInspectable var borderWidth: CGFloat = 2
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
//테두리용 크기 얻기
let inRect = strokeRect(rect, width: borderWidth)
//색을 체운 원 그리기
drawColor(context!, color: color, rect: inRect)
//원 테두리 그리기
drawStroke(context!, width: borderWidth, color: borderColor, rect: inRect)
}
private func drawColor(context: CGContext, color: UIColor, rect: CGRect) {
CGContextSetFillColorWithColor(context, color.CGColor)
CGContextFillEllipseInRect(context, rect)
}
private func drawStroke(context: CGContext, width: CGFloat, color: UIColor, rect: CGRect) {
CGContextSetLineWidth(context, width)
CGContextSetStrokeColorWithColor(context, color.CGColor)
CGContextStrokeEllipseInRect(context, rect)
}
private func strokeRect(rect: CGRect, width: CGFloat) -> CGRect {
//굵기의 반만큼 rect 크기를 줄인다
let width2 = width / 2
return CGRectInset(rect, width2, width2)
}
도움이 되셨다면~ 정성으로 빚은 저희 앱! 많은 이용 바래요:)
https://meorimal.com/index.html?tab=spaceship
https://meorimal.com/subway.html
'개발 > ios' 카테고리의 다른 글
UIEdgeInsets 없이 UILabel에 여백 넣기 (0) | 2018.05.08 |
---|---|
손쉽게 아이폰 앱을 새로 실행 시키는 코드 한줄 (1) | 2018.03.26 |
NSString을 마치 UILabel인 양 사용하기 (0) | 2017.11.20 |
UIButton 이미지를 손쉽게 정렬하자~ (0) | 2017.05.30 |
UIView에 동적으로 버튼을 넣을때 크기를 같게 맞출려면? (0) | 2017.04.25 |