UIKit 으로 파선 을 그리는 것은 쉽습니다 . 그래서:
CGFloat dashes[] = {4, 2};
[path setLineDash:dashes count:2 phase:0];
[path stroke];
진짜 점선을 그리는 방법은 없나요?
어떤 아이디어?
이 질문은 정말 오래되었고 아무도 완전한 @IBDesignable
해결책을 제시 하지 못했기 때문에 여기에 ...
누군가가 타이핑을 할 수 있기를 바랍니다.
@IBDesignable class DottedVertical: UIView {
@IBInspectable var dotColor: UIColor = UIColor.etc
@IBInspectable var lowerHalfOnly: Bool = false
override func draw(_ rect: CGRect) {
// say you want 8 dots, with perfect fenceposting:
let totalCount = 8 + 8 - 1
let fullHeight = bounds.size.height
let width = bounds.size.width
let itemLength = fullHeight / CGFloat(totalCount)
let path = UIBezierPath()
let beginFromTop = CGFloat(0.0)
let top = CGPoint(x: width/2, y: beginFromTop)
let bottom = CGPoint(x: width/2, y: fullHeight)
path.move(to: top)
path.addLine(to: bottom)
path.lineWidth = width
let dashes: [CGFloat] = [itemLength, itemLength]
path.setLineDash(dashes, count: dashes.count, phase: 0)
// for ROUNDED dots, simply change to....
//let dashes: [CGFloat] = [0.0, itemLength * 2.0]
//path.lineCapStyle = CGLineCap.round
dotColor.setStroke()
path.stroke()
}
}
수직으로 만들어서 쉽게 바꿀 수 있습니다.
장면에 UIView를 넣으십시오. 원하는 너비로 만들면 점선의 너비가됩니다.
클래스를로 변경하면 DottedVertical
완료됩니다. 스토리 보드에서 제대로 렌더링됩니다.
블록 높이에 대해 제공된 예제 코드 ( "totalCount"등 ...)는 라인을 생성하는 UIView의 끝과 일치하는 픽셀에 대해 블록을 완벽하게 생성합니다.
점이 아닌 블록에 필요한 두 줄의 코드를 제공하는 RobMayoff의 답변을 선택하십시오.