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 के उत्तर पर टिक करना सुनिश्चित करें जो डॉट्स-नहीं-ब्लॉक के लिए कोड की दो आवश्यक लाइनें देता है।